{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " <a href=\"https://www.bigdatauniversity.com\"><img src = \"https://ibm.box.com/shared/static/ugcqz6ohbvff804xp84y4kqnvvk3bq1g.png\" width = 300, align = \"center\"></a>\n",
    "\n",
    "<h1 align=center><font size = 5>Data Analysis with Python</font></h1>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# House Sales in King County, USA"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This dataset contains house sale prices for King County, which includes Seattle. It includes homes sold between May 2014 and May 2015."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<b>id</b> :a notation for a house\n",
    "\n",
    "<b> date</b>: Date house was sold\n",
    "\n",
    "\n",
    "<b>price</b>: Price is prediction target\n",
    "\n",
    "\n",
    "<b>bedrooms</b>: Number of Bedrooms/House\n",
    "\n",
    "\n",
    "<b>bathrooms</b>: Number of bathrooms/bedrooms\n",
    "\n",
    "<b>sqft_living</b>: square footage of the home\n",
    "\n",
    "<b>sqft_lot</b>: square footage of the lot\n",
    "\n",
    "\n",
    "<b>floors</b> :Total floors (levels) in house\n",
    "\n",
    "\n",
    "<b>waterfront</b> :House which has a view to a waterfront\n",
    "\n",
    "\n",
    "<b>view</b>: Has been viewed\n",
    "\n",
    "\n",
    "<b>condition</b> :How good the condition is  Overall\n",
    "\n",
    "<b>grade</b>: overall grade given to the housing unit, based on King County grading system\n",
    "\n",
    "\n",
    "<b>sqft_above</b> :square footage of house apart from basement\n",
    "\n",
    "\n",
    "<b>sqft_basement</b>: square footage of the basement\n",
    "\n",
    "<b>yr_built</b> :Built Year\n",
    "\n",
    "\n",
    "<b>yr_renovated</b> :Year when house was renovated\n",
    "\n",
    "<b>zipcode</b>:zip code\n",
    "\n",
    "\n",
    "<b>lat</b>: Latitude coordinate\n",
    "\n",
    "<b>long</b>: Longitude coordinate\n",
    "\n",
    "<b>sqft_living15</b> :Living room area in 2015(implies-- some renovations) This might or might not have affected the lotsize area\n",
    "\n",
    "\n",
    "<b>sqft_lot15</b> :lotSize area in 2015(implies-- some renovations)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You will require the following libraries "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler,PolynomialFeatures\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1.0 Importing the Data "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Load the csv:  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "file_name='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/coursera/project/kc_house_data_NaN.csv'\n",
    "df=pd.read_csv(file_name)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "we use the method <code>head</code> to display the first 5 columns of the dataframe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>id</th>\n",
       "      <th>date</th>\n",
       "      <th>price</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>sqft_living</th>\n",
       "      <th>sqft_lot</th>\n",
       "      <th>floors</th>\n",
       "      <th>waterfront</th>\n",
       "      <th>...</th>\n",
       "      <th>grade</th>\n",
       "      <th>sqft_above</th>\n",
       "      <th>sqft_basement</th>\n",
       "      <th>yr_built</th>\n",
       "      <th>yr_renovated</th>\n",
       "      <th>zipcode</th>\n",
       "      <th>lat</th>\n",
       "      <th>long</th>\n",
       "      <th>sqft_living15</th>\n",
       "      <th>sqft_lot15</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7129300520</td>\n",
       "      <td>20141013T000000</td>\n",
       "      <td>221900.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1180</td>\n",
       "      <td>5650</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>7</td>\n",
       "      <td>1180</td>\n",
       "      <td>0</td>\n",
       "      <td>1955</td>\n",
       "      <td>0</td>\n",
       "      <td>98178</td>\n",
       "      <td>47.5112</td>\n",
       "      <td>-122.257</td>\n",
       "      <td>1340</td>\n",
       "      <td>5650</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>6414100192</td>\n",
       "      <td>20141209T000000</td>\n",
       "      <td>538000.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.25</td>\n",
       "      <td>2570</td>\n",
       "      <td>7242</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>7</td>\n",
       "      <td>2170</td>\n",
       "      <td>400</td>\n",
       "      <td>1951</td>\n",
       "      <td>1991</td>\n",
       "      <td>98125</td>\n",
       "      <td>47.7210</td>\n",
       "      <td>-122.319</td>\n",
       "      <td>1690</td>\n",
       "      <td>7639</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>5631500400</td>\n",
       "      <td>20150225T000000</td>\n",
       "      <td>180000.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.00</td>\n",
       "      <td>770</td>\n",
       "      <td>10000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>6</td>\n",
       "      <td>770</td>\n",
       "      <td>0</td>\n",
       "      <td>1933</td>\n",
       "      <td>0</td>\n",
       "      <td>98028</td>\n",
       "      <td>47.7379</td>\n",
       "      <td>-122.233</td>\n",
       "      <td>2720</td>\n",
       "      <td>8062</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2487200875</td>\n",
       "      <td>20141209T000000</td>\n",
       "      <td>604000.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.00</td>\n",
       "      <td>1960</td>\n",
       "      <td>5000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>7</td>\n",
       "      <td>1050</td>\n",
       "      <td>910</td>\n",
       "      <td>1965</td>\n",
       "      <td>0</td>\n",
       "      <td>98136</td>\n",
       "      <td>47.5208</td>\n",
       "      <td>-122.393</td>\n",
       "      <td>1360</td>\n",
       "      <td>5000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>1954400510</td>\n",
       "      <td>20150218T000000</td>\n",
       "      <td>510000.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1680</td>\n",
       "      <td>8080</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>8</td>\n",
       "      <td>1680</td>\n",
       "      <td>0</td>\n",
       "      <td>1987</td>\n",
       "      <td>0</td>\n",
       "      <td>98074</td>\n",
       "      <td>47.6168</td>\n",
       "      <td>-122.045</td>\n",
       "      <td>1800</td>\n",
       "      <td>7503</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0          id             date     price  bedrooms  bathrooms  \\\n",
       "0           0  7129300520  20141013T000000  221900.0       3.0       1.00   \n",
       "1           1  6414100192  20141209T000000  538000.0       3.0       2.25   \n",
       "2           2  5631500400  20150225T000000  180000.0       2.0       1.00   \n",
       "3           3  2487200875  20141209T000000  604000.0       4.0       3.00   \n",
       "4           4  1954400510  20150218T000000  510000.0       3.0       2.00   \n",
       "\n",
       "   sqft_living  sqft_lot  floors  waterfront  ...  grade  sqft_above  \\\n",
       "0         1180      5650     1.0           0  ...      7        1180   \n",
       "1         2570      7242     2.0           0  ...      7        2170   \n",
       "2          770     10000     1.0           0  ...      6         770   \n",
       "3         1960      5000     1.0           0  ...      7        1050   \n",
       "4         1680      8080     1.0           0  ...      8        1680   \n",
       "\n",
       "   sqft_basement  yr_built  yr_renovated  zipcode      lat     long  \\\n",
       "0              0      1955             0    98178  47.5112 -122.257   \n",
       "1            400      1951          1991    98125  47.7210 -122.319   \n",
       "2              0      1933             0    98028  47.7379 -122.233   \n",
       "3            910      1965             0    98136  47.5208 -122.393   \n",
       "4              0      1987             0    98074  47.6168 -122.045   \n",
       "\n",
       "   sqft_living15  sqft_lot15  \n",
       "0           1340        5650  \n",
       "1           1690        7639  \n",
       "2           2720        8062  \n",
       "3           1360        5000  \n",
       "4           1800        7503  \n",
       "\n",
       "[5 rows x 22 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Question 1 \n",
    "Display the data types of each column using the attribute dtype, then take a screenshot and submit it, include your code in the image. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Unnamed: 0', 'id', 'date', 'price', 'bedrooms', 'bathrooms',\n",
       "       'sqft_living', 'sqft_lot', 'floors', 'waterfront', 'view', 'condition',\n",
       "       'grade', 'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated',\n",
       "       'zipcode', 'lat', 'long', 'sqft_living15', 'sqft_lot15'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Unnamed: 0         int64\n",
       "id                 int64\n",
       "date              object\n",
       "price            float64\n",
       "bedrooms         float64\n",
       "bathrooms        float64\n",
       "sqft_living        int64\n",
       "sqft_lot           int64\n",
       "floors           float64\n",
       "waterfront         int64\n",
       "view               int64\n",
       "condition          int64\n",
       "grade              int64\n",
       "sqft_above         int64\n",
       "sqft_basement      int64\n",
       "yr_built           int64\n",
       "yr_renovated       int64\n",
       "zipcode            int64\n",
       "lat              float64\n",
       "long             float64\n",
       "sqft_living15      int64\n",
       "sqft_lot15         int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dtypes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We use the method describe to obtain a statistical summary of the dataframe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>id</th>\n",
       "      <th>price</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>sqft_living</th>\n",
       "      <th>sqft_lot</th>\n",
       "      <th>floors</th>\n",
       "      <th>waterfront</th>\n",
       "      <th>view</th>\n",
       "      <th>...</th>\n",
       "      <th>grade</th>\n",
       "      <th>sqft_above</th>\n",
       "      <th>sqft_basement</th>\n",
       "      <th>yr_built</th>\n",
       "      <th>yr_renovated</th>\n",
       "      <th>zipcode</th>\n",
       "      <th>lat</th>\n",
       "      <th>long</th>\n",
       "      <th>sqft_living15</th>\n",
       "      <th>sqft_lot15</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>21613.00000</td>\n",
       "      <td>2.161300e+04</td>\n",
       "      <td>2.161300e+04</td>\n",
       "      <td>21600.000000</td>\n",
       "      <td>21603.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>2.161300e+04</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>10806.00000</td>\n",
       "      <td>4.580302e+09</td>\n",
       "      <td>5.400881e+05</td>\n",
       "      <td>3.372870</td>\n",
       "      <td>2.115736</td>\n",
       "      <td>2079.899736</td>\n",
       "      <td>1.510697e+04</td>\n",
       "      <td>1.494309</td>\n",
       "      <td>0.007542</td>\n",
       "      <td>0.234303</td>\n",
       "      <td>...</td>\n",
       "      <td>7.656873</td>\n",
       "      <td>1788.390691</td>\n",
       "      <td>291.509045</td>\n",
       "      <td>1971.005136</td>\n",
       "      <td>84.402258</td>\n",
       "      <td>98077.939805</td>\n",
       "      <td>47.560053</td>\n",
       "      <td>-122.213896</td>\n",
       "      <td>1986.552492</td>\n",
       "      <td>12768.455652</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>6239.28002</td>\n",
       "      <td>2.876566e+09</td>\n",
       "      <td>3.671272e+05</td>\n",
       "      <td>0.926657</td>\n",
       "      <td>0.768996</td>\n",
       "      <td>918.440897</td>\n",
       "      <td>4.142051e+04</td>\n",
       "      <td>0.539989</td>\n",
       "      <td>0.086517</td>\n",
       "      <td>0.766318</td>\n",
       "      <td>...</td>\n",
       "      <td>1.175459</td>\n",
       "      <td>828.090978</td>\n",
       "      <td>442.575043</td>\n",
       "      <td>29.373411</td>\n",
       "      <td>401.679240</td>\n",
       "      <td>53.505026</td>\n",
       "      <td>0.138564</td>\n",
       "      <td>0.140828</td>\n",
       "      <td>685.391304</td>\n",
       "      <td>27304.179631</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>1.000102e+06</td>\n",
       "      <td>7.500000e+04</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>290.000000</td>\n",
       "      <td>5.200000e+02</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>290.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1900.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>98001.000000</td>\n",
       "      <td>47.155900</td>\n",
       "      <td>-122.519000</td>\n",
       "      <td>399.000000</td>\n",
       "      <td>651.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>5403.00000</td>\n",
       "      <td>2.123049e+09</td>\n",
       "      <td>3.219500e+05</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.750000</td>\n",
       "      <td>1427.000000</td>\n",
       "      <td>5.040000e+03</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1190.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1951.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>98033.000000</td>\n",
       "      <td>47.471000</td>\n",
       "      <td>-122.328000</td>\n",
       "      <td>1490.000000</td>\n",
       "      <td>5100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>10806.00000</td>\n",
       "      <td>3.904930e+09</td>\n",
       "      <td>4.500000e+05</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>1910.000000</td>\n",
       "      <td>7.618000e+03</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1560.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1975.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>98065.000000</td>\n",
       "      <td>47.571800</td>\n",
       "      <td>-122.230000</td>\n",
       "      <td>1840.000000</td>\n",
       "      <td>7620.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>16209.00000</td>\n",
       "      <td>7.308900e+09</td>\n",
       "      <td>6.450000e+05</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2.500000</td>\n",
       "      <td>2550.000000</td>\n",
       "      <td>1.068800e+04</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>2210.000000</td>\n",
       "      <td>560.000000</td>\n",
       "      <td>1997.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>98118.000000</td>\n",
       "      <td>47.678000</td>\n",
       "      <td>-122.125000</td>\n",
       "      <td>2360.000000</td>\n",
       "      <td>10083.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>21612.00000</td>\n",
       "      <td>9.900000e+09</td>\n",
       "      <td>7.700000e+06</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>13540.000000</td>\n",
       "      <td>1.651359e+06</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>9410.000000</td>\n",
       "      <td>4820.000000</td>\n",
       "      <td>2015.000000</td>\n",
       "      <td>2015.000000</td>\n",
       "      <td>98199.000000</td>\n",
       "      <td>47.777600</td>\n",
       "      <td>-121.315000</td>\n",
       "      <td>6210.000000</td>\n",
       "      <td>871200.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        Unnamed: 0            id         price      bedrooms     bathrooms  \\\n",
       "count  21613.00000  2.161300e+04  2.161300e+04  21600.000000  21603.000000   \n",
       "mean   10806.00000  4.580302e+09  5.400881e+05      3.372870      2.115736   \n",
       "std     6239.28002  2.876566e+09  3.671272e+05      0.926657      0.768996   \n",
       "min        0.00000  1.000102e+06  7.500000e+04      1.000000      0.500000   \n",
       "25%     5403.00000  2.123049e+09  3.219500e+05      3.000000      1.750000   \n",
       "50%    10806.00000  3.904930e+09  4.500000e+05      3.000000      2.250000   \n",
       "75%    16209.00000  7.308900e+09  6.450000e+05      4.000000      2.500000   \n",
       "max    21612.00000  9.900000e+09  7.700000e+06     33.000000      8.000000   \n",
       "\n",
       "        sqft_living      sqft_lot        floors    waterfront          view  \\\n",
       "count  21613.000000  2.161300e+04  21613.000000  21613.000000  21613.000000   \n",
       "mean    2079.899736  1.510697e+04      1.494309      0.007542      0.234303   \n",
       "std      918.440897  4.142051e+04      0.539989      0.086517      0.766318   \n",
       "min      290.000000  5.200000e+02      1.000000      0.000000      0.000000   \n",
       "25%     1427.000000  5.040000e+03      1.000000      0.000000      0.000000   \n",
       "50%     1910.000000  7.618000e+03      1.500000      0.000000      0.000000   \n",
       "75%     2550.000000  1.068800e+04      2.000000      0.000000      0.000000   \n",
       "max    13540.000000  1.651359e+06      3.500000      1.000000      4.000000   \n",
       "\n",
       "       ...         grade    sqft_above  sqft_basement      yr_built  \\\n",
       "count  ...  21613.000000  21613.000000   21613.000000  21613.000000   \n",
       "mean   ...      7.656873   1788.390691     291.509045   1971.005136   \n",
       "std    ...      1.175459    828.090978     442.575043     29.373411   \n",
       "min    ...      1.000000    290.000000       0.000000   1900.000000   \n",
       "25%    ...      7.000000   1190.000000       0.000000   1951.000000   \n",
       "50%    ...      7.000000   1560.000000       0.000000   1975.000000   \n",
       "75%    ...      8.000000   2210.000000     560.000000   1997.000000   \n",
       "max    ...     13.000000   9410.000000    4820.000000   2015.000000   \n",
       "\n",
       "       yr_renovated       zipcode           lat          long  sqft_living15  \\\n",
       "count  21613.000000  21613.000000  21613.000000  21613.000000   21613.000000   \n",
       "mean      84.402258  98077.939805     47.560053   -122.213896    1986.552492   \n",
       "std      401.679240     53.505026      0.138564      0.140828     685.391304   \n",
       "min        0.000000  98001.000000     47.155900   -122.519000     399.000000   \n",
       "25%        0.000000  98033.000000     47.471000   -122.328000    1490.000000   \n",
       "50%        0.000000  98065.000000     47.571800   -122.230000    1840.000000   \n",
       "75%        0.000000  98118.000000     47.678000   -122.125000    2360.000000   \n",
       "max     2015.000000  98199.000000     47.777600   -121.315000    6210.000000   \n",
       "\n",
       "          sqft_lot15  \n",
       "count   21613.000000  \n",
       "mean    12768.455652  \n",
       "std     27304.179631  \n",
       "min       651.000000  \n",
       "25%      5100.000000  \n",
       "50%      7620.000000  \n",
       "75%     10083.000000  \n",
       "max    871200.000000  \n",
       "\n",
       "[8 rows x 21 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>id</th>\n",
       "      <th>date</th>\n",
       "      <th>price</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>sqft_living</th>\n",
       "      <th>sqft_lot</th>\n",
       "      <th>floors</th>\n",
       "      <th>waterfront</th>\n",
       "      <th>...</th>\n",
       "      <th>grade</th>\n",
       "      <th>sqft_above</th>\n",
       "      <th>sqft_basement</th>\n",
       "      <th>yr_built</th>\n",
       "      <th>yr_renovated</th>\n",
       "      <th>zipcode</th>\n",
       "      <th>lat</th>\n",
       "      <th>long</th>\n",
       "      <th>sqft_living15</th>\n",
       "      <th>sqft_lot15</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>21613.00000</td>\n",
       "      <td>2.161300e+04</td>\n",
       "      <td>21613</td>\n",
       "      <td>2.161300e+04</td>\n",
       "      <td>21600.000000</td>\n",
       "      <td>21603.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>2.161300e+04</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "      <td>21613.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>unique</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>372</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>top</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20140623T000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>freq</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>142</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>10806.00000</td>\n",
       "      <td>4.580302e+09</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.400881e+05</td>\n",
       "      <td>3.372870</td>\n",
       "      <td>2.115736</td>\n",
       "      <td>2079.899736</td>\n",
       "      <td>1.510697e+04</td>\n",
       "      <td>1.494309</td>\n",
       "      <td>0.007542</td>\n",
       "      <td>...</td>\n",
       "      <td>7.656873</td>\n",
       "      <td>1788.390691</td>\n",
       "      <td>291.509045</td>\n",
       "      <td>1971.005136</td>\n",
       "      <td>84.402258</td>\n",
       "      <td>98077.939805</td>\n",
       "      <td>47.560053</td>\n",
       "      <td>-122.213896</td>\n",
       "      <td>1986.552492</td>\n",
       "      <td>12768.455652</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>6239.28002</td>\n",
       "      <td>2.876566e+09</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.671272e+05</td>\n",
       "      <td>0.926657</td>\n",
       "      <td>0.768996</td>\n",
       "      <td>918.440897</td>\n",
       "      <td>4.142051e+04</td>\n",
       "      <td>0.539989</td>\n",
       "      <td>0.086517</td>\n",
       "      <td>...</td>\n",
       "      <td>1.175459</td>\n",
       "      <td>828.090978</td>\n",
       "      <td>442.575043</td>\n",
       "      <td>29.373411</td>\n",
       "      <td>401.679240</td>\n",
       "      <td>53.505026</td>\n",
       "      <td>0.138564</td>\n",
       "      <td>0.140828</td>\n",
       "      <td>685.391304</td>\n",
       "      <td>27304.179631</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>1.000102e+06</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.500000e+04</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>290.000000</td>\n",
       "      <td>5.200000e+02</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>290.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1900.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>98001.000000</td>\n",
       "      <td>47.155900</td>\n",
       "      <td>-122.519000</td>\n",
       "      <td>399.000000</td>\n",
       "      <td>651.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>5403.00000</td>\n",
       "      <td>2.123049e+09</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.219500e+05</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.750000</td>\n",
       "      <td>1427.000000</td>\n",
       "      <td>5.040000e+03</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1190.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1951.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>98033.000000</td>\n",
       "      <td>47.471000</td>\n",
       "      <td>-122.328000</td>\n",
       "      <td>1490.000000</td>\n",
       "      <td>5100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>10806.00000</td>\n",
       "      <td>3.904930e+09</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.500000e+05</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>1910.000000</td>\n",
       "      <td>7.618000e+03</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1560.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1975.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>98065.000000</td>\n",
       "      <td>47.571800</td>\n",
       "      <td>-122.230000</td>\n",
       "      <td>1840.000000</td>\n",
       "      <td>7620.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>16209.00000</td>\n",
       "      <td>7.308900e+09</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.450000e+05</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2.500000</td>\n",
       "      <td>2550.000000</td>\n",
       "      <td>1.068800e+04</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>2210.000000</td>\n",
       "      <td>560.000000</td>\n",
       "      <td>1997.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>98118.000000</td>\n",
       "      <td>47.678000</td>\n",
       "      <td>-122.125000</td>\n",
       "      <td>2360.000000</td>\n",
       "      <td>10083.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>21612.00000</td>\n",
       "      <td>9.900000e+09</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.700000e+06</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>13540.000000</td>\n",
       "      <td>1.651359e+06</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>9410.000000</td>\n",
       "      <td>4820.000000</td>\n",
       "      <td>2015.000000</td>\n",
       "      <td>2015.000000</td>\n",
       "      <td>98199.000000</td>\n",
       "      <td>47.777600</td>\n",
       "      <td>-121.315000</td>\n",
       "      <td>6210.000000</td>\n",
       "      <td>871200.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>11 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         Unnamed: 0            id             date         price  \\\n",
       "count   21613.00000  2.161300e+04            21613  2.161300e+04   \n",
       "unique          NaN           NaN              372           NaN   \n",
       "top             NaN           NaN  20140623T000000           NaN   \n",
       "freq            NaN           NaN              142           NaN   \n",
       "mean    10806.00000  4.580302e+09              NaN  5.400881e+05   \n",
       "std      6239.28002  2.876566e+09              NaN  3.671272e+05   \n",
       "min         0.00000  1.000102e+06              NaN  7.500000e+04   \n",
       "25%      5403.00000  2.123049e+09              NaN  3.219500e+05   \n",
       "50%     10806.00000  3.904930e+09              NaN  4.500000e+05   \n",
       "75%     16209.00000  7.308900e+09              NaN  6.450000e+05   \n",
       "max     21612.00000  9.900000e+09              NaN  7.700000e+06   \n",
       "\n",
       "            bedrooms     bathrooms   sqft_living      sqft_lot        floors  \\\n",
       "count   21600.000000  21603.000000  21613.000000  2.161300e+04  21613.000000   \n",
       "unique           NaN           NaN           NaN           NaN           NaN   \n",
       "top              NaN           NaN           NaN           NaN           NaN   \n",
       "freq             NaN           NaN           NaN           NaN           NaN   \n",
       "mean        3.372870      2.115736   2079.899736  1.510697e+04      1.494309   \n",
       "std         0.926657      0.768996    918.440897  4.142051e+04      0.539989   \n",
       "min         1.000000      0.500000    290.000000  5.200000e+02      1.000000   \n",
       "25%         3.000000      1.750000   1427.000000  5.040000e+03      1.000000   \n",
       "50%         3.000000      2.250000   1910.000000  7.618000e+03      1.500000   \n",
       "75%         4.000000      2.500000   2550.000000  1.068800e+04      2.000000   \n",
       "max        33.000000      8.000000  13540.000000  1.651359e+06      3.500000   \n",
       "\n",
       "          waterfront  ...         grade    sqft_above  sqft_basement  \\\n",
       "count   21613.000000  ...  21613.000000  21613.000000   21613.000000   \n",
       "unique           NaN  ...           NaN           NaN            NaN   \n",
       "top              NaN  ...           NaN           NaN            NaN   \n",
       "freq             NaN  ...           NaN           NaN            NaN   \n",
       "mean        0.007542  ...      7.656873   1788.390691     291.509045   \n",
       "std         0.086517  ...      1.175459    828.090978     442.575043   \n",
       "min         0.000000  ...      1.000000    290.000000       0.000000   \n",
       "25%         0.000000  ...      7.000000   1190.000000       0.000000   \n",
       "50%         0.000000  ...      7.000000   1560.000000       0.000000   \n",
       "75%         0.000000  ...      8.000000   2210.000000     560.000000   \n",
       "max         1.000000  ...     13.000000   9410.000000    4820.000000   \n",
       "\n",
       "            yr_built  yr_renovated       zipcode           lat          long  \\\n",
       "count   21613.000000  21613.000000  21613.000000  21613.000000  21613.000000   \n",
       "unique           NaN           NaN           NaN           NaN           NaN   \n",
       "top              NaN           NaN           NaN           NaN           NaN   \n",
       "freq             NaN           NaN           NaN           NaN           NaN   \n",
       "mean     1971.005136     84.402258  98077.939805     47.560053   -122.213896   \n",
       "std        29.373411    401.679240     53.505026      0.138564      0.140828   \n",
       "min      1900.000000      0.000000  98001.000000     47.155900   -122.519000   \n",
       "25%      1951.000000      0.000000  98033.000000     47.471000   -122.328000   \n",
       "50%      1975.000000      0.000000  98065.000000     47.571800   -122.230000   \n",
       "75%      1997.000000      0.000000  98118.000000     47.678000   -122.125000   \n",
       "max      2015.000000   2015.000000  98199.000000     47.777600   -121.315000   \n",
       "\n",
       "        sqft_living15     sqft_lot15  \n",
       "count    21613.000000   21613.000000  \n",
       "unique            NaN            NaN  \n",
       "top               NaN            NaN  \n",
       "freq              NaN            NaN  \n",
       "mean      1986.552492   12768.455652  \n",
       "std        685.391304   27304.179631  \n",
       "min        399.000000     651.000000  \n",
       "25%       1490.000000    5100.000000  \n",
       "50%       1840.000000    7620.000000  \n",
       "75%       2360.000000   10083.000000  \n",
       "max       6210.000000  871200.000000  \n",
       "\n",
       "[11 rows x 22 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe(include = \"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method DataFrame.info of        Unnamed: 0          id             date     price  bedrooms  bathrooms  \\\n",
       "0               0  7129300520  20141013T000000  221900.0       3.0       1.00   \n",
       "1               1  6414100192  20141209T000000  538000.0       3.0       2.25   \n",
       "2               2  5631500400  20150225T000000  180000.0       2.0       1.00   \n",
       "3               3  2487200875  20141209T000000  604000.0       4.0       3.00   \n",
       "4               4  1954400510  20150218T000000  510000.0       3.0       2.00   \n",
       "...           ...         ...              ...       ...       ...        ...   \n",
       "21608       21608   263000018  20140521T000000  360000.0       3.0       2.50   \n",
       "21609       21609  6600060120  20150223T000000  400000.0       4.0       2.50   \n",
       "21610       21610  1523300141  20140623T000000  402101.0       2.0       0.75   \n",
       "21611       21611   291310100  20150116T000000  400000.0       3.0       2.50   \n",
       "21612       21612  1523300157  20141015T000000  325000.0       2.0       0.75   \n",
       "\n",
       "       sqft_living  sqft_lot  floors  waterfront  ...  grade  sqft_above  \\\n",
       "0             1180      5650     1.0           0  ...      7        1180   \n",
       "1             2570      7242     2.0           0  ...      7        2170   \n",
       "2              770     10000     1.0           0  ...      6         770   \n",
       "3             1960      5000     1.0           0  ...      7        1050   \n",
       "4             1680      8080     1.0           0  ...      8        1680   \n",
       "...            ...       ...     ...         ...  ...    ...         ...   \n",
       "21608         1530      1131     3.0           0  ...      8        1530   \n",
       "21609         2310      5813     2.0           0  ...      8        2310   \n",
       "21610         1020      1350     2.0           0  ...      7        1020   \n",
       "21611         1600      2388     2.0           0  ...      8        1600   \n",
       "21612         1020      1076     2.0           0  ...      7        1020   \n",
       "\n",
       "       sqft_basement  yr_built  yr_renovated  zipcode      lat     long  \\\n",
       "0                  0      1955             0    98178  47.5112 -122.257   \n",
       "1                400      1951          1991    98125  47.7210 -122.319   \n",
       "2                  0      1933             0    98028  47.7379 -122.233   \n",
       "3                910      1965             0    98136  47.5208 -122.393   \n",
       "4                  0      1987             0    98074  47.6168 -122.045   \n",
       "...              ...       ...           ...      ...      ...      ...   \n",
       "21608              0      2009             0    98103  47.6993 -122.346   \n",
       "21609              0      2014             0    98146  47.5107 -122.362   \n",
       "21610              0      2009             0    98144  47.5944 -122.299   \n",
       "21611              0      2004             0    98027  47.5345 -122.069   \n",
       "21612              0      2008             0    98144  47.5941 -122.299   \n",
       "\n",
       "       sqft_living15  sqft_lot15  \n",
       "0               1340        5650  \n",
       "1               1690        7639  \n",
       "2               2720        8062  \n",
       "3               1360        5000  \n",
       "4               1800        7503  \n",
       "...              ...         ...  \n",
       "21608           1530        1509  \n",
       "21609           1830        7200  \n",
       "21610           1020        2007  \n",
       "21611           1410        1287  \n",
       "21612           1020        1357  \n",
       "\n",
       "[21613 rows x 22 columns]>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.info"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2.0 Data Wrangling"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Question 2 \n",
    "Drop the columns <code>\"id\"</code>  and <code>\"Unnamed: 0\"</code> from axis 1 using the method <code>drop()</code>, then use the method <code>describe()</code> to obtain a statistical summary of the data. Take a screenshot and submit it, make sure the inplace parameter is set to <code>True</code>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mSignature:\u001b[0m\n",
       "\u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdrop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mlabels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mindex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mlevel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0minplace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0merrors\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'raise'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mDocstring:\u001b[0m\n",
       "Drop specified labels from rows or columns.\n",
       "\n",
       "Remove rows or columns by specifying label names and corresponding\n",
       "axis, or by specifying directly index or column names. When using a\n",
       "multi-index, labels on different levels can be removed by specifying\n",
       "the level.\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "labels : single label or list-like\n",
       "    Index or column labels to drop.\n",
       "axis : {0 or 'index', 1 or 'columns'}, default 0\n",
       "    Whether to drop labels from the index (0 or 'index') or\n",
       "    columns (1 or 'columns').\n",
       "index : single label or list-like\n",
       "    Alternative to specifying axis (``labels, axis=0``\n",
       "    is equivalent to ``index=labels``).\n",
       "\n",
       "    .. versionadded:: 0.21.0\n",
       "columns : single label or list-like\n",
       "    Alternative to specifying axis (``labels, axis=1``\n",
       "    is equivalent to ``columns=labels``).\n",
       "\n",
       "    .. versionadded:: 0.21.0\n",
       "level : int or level name, optional\n",
       "    For MultiIndex, level from which the labels will be removed.\n",
       "inplace : bool, default False\n",
       "    If True, do operation inplace and return None.\n",
       "errors : {'ignore', 'raise'}, default 'raise'\n",
       "    If 'ignore', suppress error and only existing labels are\n",
       "    dropped.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "DataFrame\n",
       "    DataFrame without the removed index or column labels.\n",
       "\n",
       "Raises\n",
       "------\n",
       "KeyError\n",
       "    If any of the labels is not found in the selected axis.\n",
       "\n",
       "See Also\n",
       "--------\n",
       "DataFrame.loc : Label-location based indexer for selection by label.\n",
       "DataFrame.dropna : Return DataFrame with labels on given axis omitted\n",
       "    where (all or any) data are missing.\n",
       "DataFrame.drop_duplicates : Return DataFrame with duplicate rows\n",
       "    removed, optionally only considering certain columns.\n",
       "Series.drop : Return Series with specified index labels removed.\n",
       "\n",
       "Examples\n",
       "--------\n",
       ">>> df = pd.DataFrame(np.arange(12).reshape(3, 4),\n",
       "...                   columns=['A', 'B', 'C', 'D'])\n",
       ">>> df\n",
       "   A  B   C   D\n",
       "0  0  1   2   3\n",
       "1  4  5   6   7\n",
       "2  8  9  10  11\n",
       "\n",
       "Drop columns\n",
       "\n",
       ">>> df.drop(['B', 'C'], axis=1)\n",
       "   A   D\n",
       "0  0   3\n",
       "1  4   7\n",
       "2  8  11\n",
       "\n",
       ">>> df.drop(columns=['B', 'C'])\n",
       "   A   D\n",
       "0  0   3\n",
       "1  4   7\n",
       "2  8  11\n",
       "\n",
       "Drop a row by index\n",
       "\n",
       ">>> df.drop([0, 1])\n",
       "   A  B   C   D\n",
       "2  8  9  10  11\n",
       "\n",
       "Drop columns and/or rows of MultiIndex DataFrame\n",
       "\n",
       ">>> midx = pd.MultiIndex(levels=[['lama', 'cow', 'falcon'],\n",
       "...                              ['speed', 'weight', 'length']],\n",
       "...                      codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2],\n",
       "...                             [0, 1, 2, 0, 1, 2, 0, 1, 2]])\n",
       ">>> df = pd.DataFrame(index=midx, columns=['big', 'small'],\n",
       "...                   data=[[45, 30], [200, 100], [1.5, 1], [30, 20],\n",
       "...                         [250, 150], [1.5, 0.8], [320, 250],\n",
       "...                         [1, 0.8], [0.3, 0.2]])\n",
       ">>> df\n",
       "                big     small\n",
       "lama    speed   45.0    30.0\n",
       "        weight  200.0   100.0\n",
       "        length  1.5     1.0\n",
       "cow     speed   30.0    20.0\n",
       "        weight  250.0   150.0\n",
       "        length  1.5     0.8\n",
       "falcon  speed   320.0   250.0\n",
       "        weight  1.0     0.8\n",
       "        length  0.3     0.2\n",
       "\n",
       ">>> df.drop(index='cow', columns='small')\n",
       "                big\n",
       "lama    speed   45.0\n",
       "        weight  200.0\n",
       "        length  1.5\n",
       "falcon  speed   320.0\n",
       "        weight  1.0\n",
       "        length  0.3\n",
       "\n",
       ">>> df.drop(index='length', level=1)\n",
       "                big     small\n",
       "lama    speed   45.0    30.0\n",
       "        weight  200.0   100.0\n",
       "cow     speed   30.0    20.0\n",
       "        weight  250.0   150.0\n",
       "falcon  speed   320.0   250.0\n",
       "        weight  1.0     0.8\n",
       "\u001b[0;31mFile:\u001b[0m      ~/conda/envs/python/lib/python3.6/site-packages/pandas/core/frame.py\n",
       "\u001b[0;31mType:\u001b[0m      method\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.drop?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.drop([\"id\", \"Unnamed: 0\"], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "we can see we have missing values for the columns <code> bedrooms</code>  and <code> bathrooms </code>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>price</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>sqft_living</th>\n",
       "      <th>sqft_lot</th>\n",
       "      <th>floors</th>\n",
       "      <th>waterfront</th>\n",
       "      <th>view</th>\n",
       "      <th>condition</th>\n",
       "      <th>grade</th>\n",
       "      <th>sqft_above</th>\n",
       "      <th>sqft_basement</th>\n",
       "      <th>yr_built</th>\n",
       "      <th>yr_renovated</th>\n",
       "      <th>zipcode</th>\n",
       "      <th>lat</th>\n",
       "      <th>long</th>\n",
       "      <th>sqft_living15</th>\n",
       "      <th>sqft_lot15</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>20141013T000000</td>\n",
       "      <td>221900.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1180</td>\n",
       "      <td>5650</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>1180</td>\n",
       "      <td>0</td>\n",
       "      <td>1955</td>\n",
       "      <td>0</td>\n",
       "      <td>98178</td>\n",
       "      <td>47.5112</td>\n",
       "      <td>-122.257</td>\n",
       "      <td>1340</td>\n",
       "      <td>5650</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>20141209T000000</td>\n",
       "      <td>538000.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.25</td>\n",
       "      <td>2570</td>\n",
       "      <td>7242</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>2170</td>\n",
       "      <td>400</td>\n",
       "      <td>1951</td>\n",
       "      <td>1991</td>\n",
       "      <td>98125</td>\n",
       "      <td>47.7210</td>\n",
       "      <td>-122.319</td>\n",
       "      <td>1690</td>\n",
       "      <td>7639</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>20150225T000000</td>\n",
       "      <td>180000.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.00</td>\n",
       "      <td>770</td>\n",
       "      <td>10000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "      <td>770</td>\n",
       "      <td>0</td>\n",
       "      <td>1933</td>\n",
       "      <td>0</td>\n",
       "      <td>98028</td>\n",
       "      <td>47.7379</td>\n",
       "      <td>-122.233</td>\n",
       "      <td>2720</td>\n",
       "      <td>8062</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>20141209T000000</td>\n",
       "      <td>604000.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.00</td>\n",
       "      <td>1960</td>\n",
       "      <td>5000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>1050</td>\n",
       "      <td>910</td>\n",
       "      <td>1965</td>\n",
       "      <td>0</td>\n",
       "      <td>98136</td>\n",
       "      <td>47.5208</td>\n",
       "      <td>-122.393</td>\n",
       "      <td>1360</td>\n",
       "      <td>5000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>20150218T000000</td>\n",
       "      <td>510000.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1680</td>\n",
       "      <td>8080</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>1680</td>\n",
       "      <td>0</td>\n",
       "      <td>1987</td>\n",
       "      <td>0</td>\n",
       "      <td>98074</td>\n",
       "      <td>47.6168</td>\n",
       "      <td>-122.045</td>\n",
       "      <td>1800</td>\n",
       "      <td>7503</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              date     price  bedrooms  bathrooms  sqft_living  sqft_lot  \\\n",
       "0  20141013T000000  221900.0       3.0       1.00         1180      5650   \n",
       "1  20141209T000000  538000.0       3.0       2.25         2570      7242   \n",
       "2  20150225T000000  180000.0       2.0       1.00          770     10000   \n",
       "3  20141209T000000  604000.0       4.0       3.00         1960      5000   \n",
       "4  20150218T000000  510000.0       3.0       2.00         1680      8080   \n",
       "\n",
       "   floors  waterfront  view  condition  grade  sqft_above  sqft_basement  \\\n",
       "0     1.0           0     0          3      7        1180              0   \n",
       "1     2.0           0     0          3      7        2170            400   \n",
       "2     1.0           0     0          3      6         770              0   \n",
       "3     1.0           0     0          5      7        1050            910   \n",
       "4     1.0           0     0          3      8        1680              0   \n",
       "\n",
       "   yr_built  yr_renovated  zipcode      lat     long  sqft_living15  \\\n",
       "0      1955             0    98178  47.5112 -122.257           1340   \n",
       "1      1951          1991    98125  47.7210 -122.319           1690   \n",
       "2      1933             0    98028  47.7379 -122.233           2720   \n",
       "3      1965             0    98136  47.5208 -122.393           1360   \n",
       "4      1987             0    98074  47.6168 -122.045           1800   \n",
       "\n",
       "   sqft_lot15  \n",
       "0        5650  \n",
       "1        7639  \n",
       "2        8062  \n",
       "3        5000  \n",
       "4        7503  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of NaN values for the column bedrooms : 13\n",
      "number of NaN values for the column bathrooms : 10\n"
     ]
    }
   ],
   "source": [
    "print(\"number of NaN values for the column bedrooms :\", df['bedrooms'].isnull().sum())\n",
    "print(\"number of NaN values for the column bathrooms :\", df['bathrooms'].isnull().sum())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "We can replace the missing values of the column <code>'bedrooms'</code> with the mean of the column  <code>'bedrooms' </code> using the method replace. Don't forget to set the <code>inplace</code> parameter top <code>True</code>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "mean=df['bedrooms'].mean()\n",
    "df['bedrooms'].replace(np.nan,mean, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "We also replace the missing values of the column <code>'bathrooms'</code> with the mean of the column  <code>'bedrooms' </codse> using the method replace.Don't forget to set the <code> inplace </code>  parameter top <code> Ture </code>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "mean=df['bathrooms'].mean()\n",
    "df['bathrooms'].replace(np.nan,mean, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of NaN values for the column bedrooms : 0\n",
      "number of NaN values for the column bathrooms : 0\n"
     ]
    }
   ],
   "source": [
    "print(\"number of NaN values for the column bedrooms :\", df['bedrooms'].isnull().sum())\n",
    "print(\"number of NaN values for the column bathrooms :\", df['bathrooms'].isnull().sum())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3.0 Exploratory data analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Question 3\n",
    "Use the method value_counts to count the number of houses with unique floor values, use the method .to_frame() to convert it to a dataframe.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0        1.0\n",
       "1        2.0\n",
       "2        1.0\n",
       "3        1.0\n",
       "4        1.0\n",
       "        ... \n",
       "21608    3.0\n",
       "21609    2.0\n",
       "21610    2.0\n",
       "21611    2.0\n",
       "21612    2.0\n",
       "Name: floors, Length: 21613, dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['floors']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0    10680\n",
       "2.0     8241\n",
       "1.5     1910\n",
       "3.0      613\n",
       "2.5      161\n",
       "3.5        8\n",
       "Name: floors, dtype: int64"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['floors'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>floors</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1.0</td>\n",
       "      <td>10680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2.0</td>\n",
       "      <td>8241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1.5</td>\n",
       "      <td>1910</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3.0</td>\n",
       "      <td>613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2.5</td>\n",
       "      <td>161</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3.5</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     floors\n",
       "1.0   10680\n",
       "2.0    8241\n",
       "1.5    1910\n",
       "3.0     613\n",
       "2.5     161\n",
       "3.5       8"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['floors'].value_counts().to_frame()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Question 4\n",
    "Use the function <code>boxplot</code> in the seaborn library  to  determine whether houses with a waterfront view or without a waterfront view have more price outliers ."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>waterfront</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>221900.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>538000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>180000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>604000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>510000.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   waterfront     price\n",
       "0           0  221900.0\n",
       "1           0  538000.0\n",
       "2           0  180000.0\n",
       "3           0  604000.0\n",
       "4           0  510000.0"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_group_one = df[['waterfront','price']]\n",
    "df_group_one.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>waterfront</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>21608</td>\n",
       "      <td>0</td>\n",
       "      <td>360000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21609</td>\n",
       "      <td>0</td>\n",
       "      <td>400000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21610</td>\n",
       "      <td>0</td>\n",
       "      <td>402101.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21611</td>\n",
       "      <td>0</td>\n",
       "      <td>400000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21612</td>\n",
       "      <td>0</td>\n",
       "      <td>325000.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       waterfront     price\n",
       "21608           0  360000.0\n",
       "21609           0  400000.0\n",
       "21610           0  402101.0\n",
       "21611           0  400000.0\n",
       "21612           0  325000.0"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_group_one.tail(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f216b4df320>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(x=\"waterfront\", y=\"price\", data=df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Question 5\n",
    "Use the function <code> regplot</code>  in the seaborn library  to  determine if the feature <code>sqft_above</code> is negatively or positively correlated with price."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 8086188.1717741545)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEJCAYAAACkH0H0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9e3wc13Xn+T1V/QTQeJAE+KZJWrQpyW9xZXmij8KVE0mTzFjeXXlCZTPWTJSVxuMdJ5N1VtZsYnllT9baZKOJEscm185YdhLTCjeJtPOJosiSGcWzepiUouhFizRJk+ALAPFqoN9VZ/+oW83qZgNokGw875cffLpx+95b1c1GnTrn/u45oqpYLBaLxTJXOPN9AhaLxWJZXljDY7FYLJY5xRoei8Viscwp1vBYLBaLZU6xhsdisVgsc4o1PBaLxWKZU1pqeETk34vIGyLyuoh8R0RSIrJCRJ4WkcPmsSfS/34ROSIiPxKRWyPt14nIa+a1R0RETHtSRL5r2l8Ukc2RMXeZYxwWkbsi7VtM38NmbKKVn4HFYrFYapFW7eMRkfXAD4BrVDUvIo8Bfw1cAwyr6pdF5HNAj6reJyLXAN8BrgfWAd8D3qWqnoi8BPwq8IKZ4xFVfVJE/i3wPlX9NyKyC/jvVPUXRGQFcADYAShwELhOVUfMefyFqu4Vka8Br6rqV6d7L6tWrdLNmzdf4U/IYrFYljYHDx4cUtXe+vZYi48bA9IiUgbagNPA/cBO8/qjwH7gPuB2YK+qFoFjInIEuF5EjgOdqvo8gIh8C/g48KQZ8wUz1z7gD403dCvwtKoOmzFPA7eJyF7gZuAXI8f/AjCt4dm8eTMHDhy41M/AYrFYliUi8pNG7S0LtanqKeB3gRPAGWBMVf8WWK2qZ0yfM0CfGbIeOBmZot+0rTfP69trxqhqBRgDVk4z10pg1PStn8tisVgsc0DLDI9Zu7kd2EIQOmsXkV+abkiDNp2m/VLGTDdX7cmI3CMiB0TkwODgYKMuFovFYrkEWiku+BngmKoOqmoZ+AvgnwDnRGQtgHkcMP37gY2R8RsIQnP95nl9e80YEYkBXcDwNHMNAd2mb/1cNajqHlXdoao7ensvClFaLBaL5RJppeE5AdwgIm1m3eWjwFvAE0CoMrsLeNw8fwLYZZRqW4BtwEsmHJcVkRvMPJ+sGxPOdQfwrAZqiaeAW0Skx3hetwBPmde+b/rWH99isVgsc0DLxAWq+qKI7ANeBirAK8AeoAN4TETuJjBOnzD93zCKszdN/0+rqmem+xTwTSBNICp40rR/A/i2ESIMA7vMXMMi8kXgh6bfg6HQgEDIsFdEvmTO6RstePsWi8VimYKWyamXEjt27FCrarNYLJbZISIHVXVHfXur5dQWi8ViuUz2Hxpg93NHOTmSY2NPG/fetJWd2/tmHrhAsSlzLBaLZQGz/9AAn3/iDQayBbrTcQayBT7/xBvsPzQw8+AFijU8FovFsoDZ/dxR4q7QloghEjzGXWH3c0fn+9QuGWt4LBaLZQFzciRHOu7WtKXjLv0juXk6o8vHGh6LxWJZwGzsaSNf9mra8mWPDT1t83RGl481PBaLxbKAufemrZQ9JVeqoBo8lj3l3pu2zvepXTLW8FgsFssCZuf2Ph782LX0ZVKM5cv0ZVI8+LFrF7WqzcqpLRaLZYGzc3vfojY09ViPx2KxWCxzijU8FovFYplTrOGxWCwWy5xiDY/FYrFY5hRreCwWi8Uyp1jDY7FYLJY5xRoei8Viscwp1vBYLBaLZU6xhsdisVgsc4rNXGCxWCyzYKkVZZsPWubxiMi7ReQfIj/jIvJrIrJCRJ4WkcPmsScy5n4ROSIiPxKRWyPt14nIa+a1R0RETHtSRL5r2l8Ukc2RMXeZYxwWkbsi7VtM38NmbKJVn4HFYllaLMWibPNBywyPqv5IVT+gqh8ArgNywF8CnwOeUdVtwDPmd0TkGmAXcC1wG/BHIhIWofgqcA+wzfzcZtrvBkZU9SrgYeAhM9cK4AHgw8D1wAMRA/cQ8LA5/oiZw2KxWGZkKRZlmw/mao3no8CPVfUnwO3Ao6b9UeDj5vntwF5VLarqMeAIcL2IrAU6VfV5VVXgW3Vjwrn2AR813tCtwNOqOqyqI8DTwG3mtZtN3/rjWywWy7QsxaJs88FcGZ5dwHfM89WqegbAPIbB0fXAyciYftO23jyvb68Zo6oVYAxYOc1cK4FR07d+LovFYpmWpViUbT5oueExaygfA/58pq4N2nSa9ksZM91ctScjco+IHBCRA4ODg426WCyWZcZCL8q2/9AAd+55gRsfepY797ywYNee5sLj+afAy6p6zvx+zoTPMI/hJ9MPbIyM2wCcNu0bGrTXjBGRGNAFDE8z1xDQbfrWz1WDqu5R1R2quqO3t3dWb9hisSxNFnJRtsUkfJgLOfWdXAizATwB3AV82Tw+Hmn/MxH5PWAdgYjgJVX1RCQrIjcALwKfBP6gbq7ngTuAZ1VVReQp4LcjgoJbgPvNa983fffWHd9isVhmZKEWZYsKHwDaEjFypQq7nzu64M63pYZHRNqAnwXujTR/GXhMRO4GTgCfAFDVN0TkMeBNoAJ8WlXDYOqngG8CaeBJ8wPwDeDbInKEwNPZZeYaFpEvAj80/R5U1WHz/D5gr4h8CXjFzGGxWCyLmpMjObrT8Zq2hSp8kEAoZpmOHTt26IEDB+b7NCwWi2VK7tzzAgPZQtXjAciVKvRlUnznnhvm5ZxE5KCq7qhvtylzLBaLZQmw0IUPUazhsVgsliXAQhY+1GNztVksFssSYaEKH+qxHo/FYrFY5hRreCwWi8Uyp1jDY7FYLJY5xRoei8Viscwp1vBYLBaLZU6xhsdisVgsc4o1PBaLxWKZU6zhsVgsFsucYg2PxWKxWOYUa3gsFovFMqdYw2OxWCyWOcUaHovFYrHMKdbwWCwWi2VOsYbHYrFYLHOKNTwWi8VimVNaanhEpFtE9onIIRF5S0Q+IiIrRORpETlsHnsi/e8XkSMi8iMRuTXSfp2IvGZee0RExLQnReS7pv1FEdkcGXOXOcZhEbkr0r7F9D1sxiZa+RlYLBaLpZZWezy/D/yNqm4H3g+8BXwOeEZVtwHPmN8RkWuAXcC1wG3AH4mIa+b5KnAPsM383Gba7wZGVPUq4GHgITPXCuAB4MPA9cADEQP3EPCwOf6ImcNisVgsc0TLDI+IdAI3Ad8AUNWSqo4CtwOPmm6PAh83z28H9qpqUVWPAUeA60VkLdCpqs+rqgLfqhsTzrUP+Kjxhm4FnlbVYVUdAZ4GbjOv3Wz61h/fYrFYLHNAKz2ercAg8J9F5BUR+bqItAOrVfUMgHkM67SuB05GxvebtvXmeX17zRhVrQBjwMpp5loJjJq+9XNZLBaLZQ5opeGJAR8CvqqqHwQmMWG1KZAGbTpN+6WMmW6u2pMRuUdEDojIgcHBwUZdLBaLxXIJtNLw9AP9qvqi+X0fgSE6Z8JnmMeBSP+NkfEbgNOmfUOD9poxIhIDuoDhaeYaArpN3/q5alDVPaq6Q1V39Pb2zuJtWywWi2U6WmZ4VPUscFJE3m2aPgq8CTwBhCqzu4DHzfMngF1GqbaFQETwkgnHZUXkBrNG88m6MeFcdwDPmnWgp4BbRKTHiApuAZ4yr33f9K0/vsVisVjmgNjMXS6Lfwf8qZEsHwX+NYGxe0xE7gZOAJ8AUNU3ROQxAuNUAT6tqp6Z51PAN4E08KT5gUC48G0ROULg6ewycw2LyBeBH5p+D6rqsHl+H7BXRL4EvGLmsFgsFsscIYETYJmOHTt26IEDB+b7NCwWi2VRISIHVXVHfbvNXGCxWCyWOcUaHovFYrHMKdbwWCwWi2VOabW4wGKxWADYf2iA3c8d5eRIjo09bdx701Z2bu+beaBlyWE9HovF0nL2Hxrg80+8wUC2QHc6zkC2wOefeIP9hwZmHmxZcljDY7FYWs7u544Sd4W2RAyR4DHuCrufOzrfp2aZB6zhsVgsLefkSI503K1pS8dd+kdy83RGlvnEGh6LxdJyNva0kS97NW35sseGnrZ5OiPLfGINj8ViaTn33rSVsqfkShVUg8eyp9x709b5PjXLPGBVbRaLpeXs3N7HgwRrPf0jOTZchqrNquMWP9bwWCxLhIV+Qd65ve+yzydUx8VdqVHHPWjmtywObKjNYlkCLBe5slXHLQ2s4bFYlgDL5YJs1XFLA2t4LJYlwHK5IFt13NLAGh6LZQmwXC7IVh23NLCGx2JZAiyUC/L+QwPcuecFbnzoWe7c88IVX2Paub2PBz92LX2ZFGP5Mn2ZFA9+7ForLFhk2EJwTWALwVkWA6Gq7XLlypdz/FBxlo675MseZU+tYVjGTFUIzsqpLZYlwpWQK18OUYEDQFsiRq5UYfdzR63hsdTQ0lCbiBwXkddE5B9E5IBpWyEiT4vIYfPYE+l/v4gcEZEficitkfbrzDxHROQRERHTnhSR75r2F0Vkc2TMXeYYh0Xkrkj7FtP3sBmbaOVnYLEsF5aLwMFy+czFGs9/q6ofiLhbnwOeUdVtwDPmd0TkGmAXcC1wG/BHIhJ+i78K3ANsMz+3mfa7gRFVvQp4GHjIzLUCeAD4MHA98EDEwD0EPGyOP2LmsFgsl8lyEThYLp/5EBfcDjxqnj8KfDzSvldVi6p6DDgCXC8ia4FOVX1egwWpb9WNCefaB3zUeEO3Ak+r6rCqjgBPA7eZ1242feuPb7FYLoOFInCwLHxabXgU+FsROSgi95i21ap6BsA8hsHf9cDJyNh+07bePK9vrxmjqhVgDFg5zVwrgVHTt36uGkTkHhE5ICIHBgcHZ/WmLZbliFWcWZql1eKCn1LV0yLSBzwtIoem6SsN2nSa9ksZM91ctY2qe4A9EKjaGvWxWCy1zLfAwbI4aKnHo6qnzeMA8JcE6y3nTPgM8xgK/fuBjZHhG4DTpn1Dg/aaMSISA7qA4WnmGgK6Td/6uSwWi8UyB7TM8IhIu4hkwufALcDrwBNAqDK7C3jcPH8C2GWUalsIRAQvmXBcVkRuMGs0n6wbE851B/CsWQd6CrhFRHqMqOAW4Cnz2vdN3/rjWywWi2UOaGWobTXwl0b5HAP+TFX/RkR+CDwmIncDJ4BPAKjqGyLyGPAmUAE+raqhROZTwDeBNPCk+QH4BvBtETlC4OnsMnMNi8gXgR+afg+q6rB5fh+wV0S+BLxi5rBYLBbLHGEzFzSBzVxgsVgss8dmLrBYlggLveCbxTITNkmoxbKIWC4F3yxLG2t4LJZFxHIp+GZZ2ljDY7EsImw+NMtSwBoei2URYfOhWZYCVlxgsSwi7r1pK59/4g1ypUpNzZvFmg8tKpToSLiICNlixYomljjW47FYFhFLKR9aVCjhChwZnOTwwASuYEUTSxzr8Vgsi4ylkg8tKpQ4OjiBKwICQxMltvZ22CJySxjr8VgslnkhKpQoeT4iIBI8ByuaWMpYw2OxWOaFqFAi4TqogmrwHKxoYinTtOERkXeIyM+Y5+kwAajFYrFcCtHCcas6EniqeL6yqiNhi8gtcZoyPCLyPxFU7dxtmjYAf9Wqk7JYLEufqFDCV7iqt51tfR34yqIWTVhmpllxwacJaum8CKCqh01xN4vFYrlklopQwjI7mjU8RVUtmRIHYdE1m9baYlmi2ESkllbS7BrP34nIfwDSIvKzwJ8D/2/rTstiscwXNhGppdU0a3g+BwwCrwH3An8N/GarTspiscwfNhGppdU0G2pLA3+sqv83gIi4ps2K7C2WJcbJkRzd6XhNm91TY7mSNOvxPENgaELSwPeu/OlYLJb5xiYitbSaZg1PSlUnwl/M86a+hSLiisgrIvJfzO8rRORpETlsHnsife8XkSMi8iMRuTXSfp2IvGZee0SMykFEkiLyXdP+oohsjoy5yxzjsIjcFWnfYvoeNmMTTX4GFsuyILq/RlUv2lOz/9AAd+55gRsfepY797xg134ss6ZZwzMpIh8KfxGR64B8k2N/FXgr8vvngGdUdRuBJ/U5M+c1wC7gWuA24I9MSA/gq8A9wDbzc5tpvxsYUdWrgIeBh8xcK4AHgA8TyMAfiBi4h4CHzfFHzBwWi8UwXSJSKzywXAmaXeP5NeDPReS0+X0t8AszDRKRDcDPA/8R+HXTfDuw0zx/FNgP3Gfa96pqETgmIkeA60XkONCpqs+bOb8FfBx40oz5gplrH/CHxhu6FXhaVYfNmKeB20RkL3Az8IuR43+BwLBZLBbDVPtrosIDgLZEzCbztMyapgyPqv5QRLYD7wYEOKSq5SaG/ifgfwWi6XVWq+oZM++ZyEbU9cALkX79pq1snte3h2NOmrkqIjIGrIy2141ZCYyqaqXBXDWIyD0EXhabNm1q4q1aLEsfKzywXAmmNTwicrOqPisi/33dS9tEBFX9i2nG/jNgQFUPisjOJs5FGrTpNO2XMma6uWobVfcAewB27NhhN8taLATCg+PnJxjPVyh5PgnXoTMdY/PKjvk+NcsiYiaP56eBZ4F/3uA1BaY0PMBPAR8TkZ8DUkCniPwJcE5E1hpvZy0QBof7gY2R8RuA06Z9Q4P26Jh+k02hCxg27TvrxuwHhoBuEYkZryc6l8VimYGPbF3BS8eHcQQcU8JgIFvizv9mxXyfmmURMa3hUdUHRMQBnlTVx2YzsareD9wPYDyez6rqL4nI7wB3AV82j4+bIU8AfyYivwesIxARvKSqnohkReQGglxxnwT+IDLmLuB54A7gWVVVEXkK+O2IoOAW4H7z2vdN3711x7dY5oQrmY5mrlPbPH90mN6OBNnCBY8nk4rx/NFhPtOyo1qWGjOq2lTVB/7nK3jMLwM/KyKHgZ81v6OqbwCPAW8CfwN8WlXDzQSfAr4OHAF+TCAsAPgGsNIIEX4do5AzooIvAj80Pw+GQgMCIcOvmzErzRwWy5xwJVVh86EwOzmSY1VHkq29HWxf08nW3g5WdSTtGo9lVojqzMsXIvJbBPLp7wKTYXvkYr6k2bFjhx44cGC+T8NyBZjv5Jd37nmBgWyhqgoDyJUq9GVSfOeeG+ZtroV8TMviRUQOquqO+vZm9/H8MvBvgb8DDkR+LJZFw0LYgxIt9xxyqaqwKzlXs8y0udRiaYZm9/FcQ2B4biQQFfw98LVWnZTF0gqu9B6U0Ht6+9w4ZU9JxBy29WWm9aI29rRd5DFcSjqa/YcGGM+XOTOWJxVz6c0kyaTil53aZiaPcOf2Ph4k+Cz7R3JssCUTLJdAs6G2x4Bx4E9N051At6r+ixae24LBhtqWBjc+9Czd6ThhXalsoczAeIGip1y/ecWsLqCh91SqeJyfLAWNCqsyCeKuO2X1zHBc3BXScZd82aPs6ayqbV7qsZud93LOzWKJMlWorVmP592q+v7I798XkVevzKlZLHND1NvIFsqcHi2gKKmYw0C2wGf3vUpvR5JssTLj+k/oPZ2fqOAgOI7gqzKer7CmKzalF3UlPIbw2F3pFMmYy9BEkWLFZ7Lo8ciu912ykbBZCSxzRbOG5xURuUFVXwAQkQ8D/7V1p2WxXHnuvWkrn3/iDXKlCgPjgdEBWNWRpOIpo7kyE4UKV/V1VNd/HoSGF91wB3/J83GrlXmDfS0zrbNcbrnnaPaAznScznQcVWUsX75i84bYrASWVtCsuODDwP8nIsdN7rTngZ82GaP/sWVnZ7FcQaLJL4ueknAd1nWl6UzHGZoo4gh4qk0VPwtLByRchzBarQoJ12l5CYFWlS2w5RAsc0Wzhuc2YAtBJoOfNs9/DvhnNM5qYLEsSHZu7+M799zA9ZtXsKYrRae5wy95PhAYjpDp7vZDdVcmFcNHqfg+vq90pmMtV3m1SllmFWuWuaLZJKE/afWJWCytpF6t9ZGtK9j38ilypQrpuIvrCBVP6c0kq2PCu/2plF7hWk3FG6dkVG2bV3a0XOXVCmVZ+B4ni+WmFXoWy6XSlKptuWNVbQuTZjeDTqXWuuND63n+6DD9IznaEy7nJ0t0puMX9dn38qklrfSyajZLq7hcVZvFsqCIXiy703GODU1w758cJJOKXXSnPpVa6/mjwzW77UNDFvUiloPSazm8R8vCwhoey7xwualrohfL8Xy5up8lV6xcpEhrVq3VSG32m4+/3nKl13yn8Wmlmm2+39t8s9zf/1Q0Ky6wWK4YVyJ1TTRdzNBEEQfBdYSyrxcp0i5HrdUqpdf+QwPcuecFrvvi33Lvnxzk+PmJeUvj08r3ON8piuaT5f7+p8MaHsucE/VWmpEuNyJ6sSx5PiIX5MxQe8d+OWqtVii9ohekQtnHV+X8RJmJYuWSPovLpVVqtivx/7yYWe7vfzpsqM0y58w2tNMoXBHdDJpwncD4IFVVWvSOfSYV2HThkFYoyKIXpHADqgKD2SKZVHzKz+JScsPN9DmG4cVW5F9b7htSl/v7nw5reCxXhNnEsmeTKLNeRFBdv/nYtTz4sWvZ/dxRxnIlKr6yoj1ORzLW8I59qmwBU84PNcbnSsbloxekhOtQ8RRxLuwlavRZRPOzjRcqQb+Sx/HzE9NmWGj2fV7p9whXLiHqYmW5v//psKE2y2Uz21j2bEI704Urws2gB37rFnb/0nVsXtnBWL5MXybVtBR4PsIh0TDhqo4kPkq54lPxlDfPjNE/kucjW2tLSYfnmS0EueFijoPjCOP5SlPnOx/vc7lvSF3u7386rMdjuWyakePWe0TRPTRhaAeCQmNRr+lyFGnNEM6fLZQZzBYpeT5xRxjLl2cce6mKpWiYMJOK0Z53Gc1XcAVSMZdMKsa+l0/xvg3d1flmmxuu/tzePjfO2q509fXxfJmhiSLHz+e4c88LLVFbLfcSCsv9/U+HNTyWy2Ym49AozLPv5VM1XslUoaBMMka+7LUsXLGxp43j5yc4P1FGhKoyLluosP/QwJQXiWZCdFNRf0HyFdZ2JVnVkar2qTfcYdimGpqTqXPDNTq3iaLH0ESR3kyK8XyZ02N5AJKuzOrcZ0srQniLieX+/qeiZaE2EUmJyEsi8qqIvCEi/7tpXyEiT4vIYfPYExlzv4gcEZEficitkfbrTELSIyLyiJiCKiKSFJHvmvYXRWRzZMxd5hiHReSuSPsW0/ewGZto1WewXJhJjttMmGeqPqrasnDF/kMD9I/kODMWeDpFE+4C6GmLTxmGeuR7b3P3tw5wYjjHsaFJBsYLU4auQtn0jQ89y517XqiGH8Mw4d/fdzOd6Tgr25M14+q9mJlyw31k64rqcT6z9xVKFa/ms1zRHmckVyZXqjA0UQRAEPo6U1ZtZZlzWrnGUwRuNnV8PgDcJiI3AJ8DnlHVbcAz5ndE5BpgF3AtQVLSPxKRsK7vV4F7gG3m5zbTfjcwoqpXAQ8DD5m5VgAPEGTVvh54IGLgHgIeNscfMXNYLoOZYtnNlGieqs9kyatmlJ7t+s107D80wG/se5UzY4Wa9oqv9KTjrOpINlQfPfK9t/n9Z4/g+YGB8hUGJkqcG8tf9J6aXftqZh9NmFl7y6oOulIx0nGXrrY4m1d2VNP6hMeZLFU4P1liPBIuXNmeJJOK0ZdJUagE4cR13SkyqcBTnWu11VQG2bI8aFmoTYMkcBPm17j5UeB2YKdpfxTYD9xn2veqahE4JiJHgOtNGYZOVX0eQES+BXwceNKM+YKZax/wh8YbuhV4WlWHzZinCQzfXuBm4Bcjx/8CgWGzXCIzxbKbUfdM16eZcMVU6y1Tte9+7ijZQgXXFHBTDb6cIjBZ8qYM5339B8dwBFQCoxMyMFHCcYQtqzqqbVOtfT30N4emTViaL3uM58vEHeHGh569SPpc/56/sv/HCLCmK4WIkIq5lDyfoYliNft2vuyxrS/Dd+65gTv3vDCvaqvLCVNalgYtXeMxHstB4CrgK6r6ooisVtUzAKp6RkTCb9p64IXI8H7TVjbP69vDMSfNXBURGQNWRtvrxqwERlW10mCu+nO/h8DLYtOmTbN858uP6YxDdDE9moQyGi5rps9UhBeysucxlitzZizPyydG+Ln3rObgibGGF7iTIzkqvk/MdYg5DmUjZVaFQuXiY4cX+fFCBQGkwXkMTpT4xetXVPu/fGIEz/dJxlx6M0kyqTgVz+f4+RybV7bhCrxyYoSXjp9nbSZJIpFgLF+mIxlDgbKvNed9R/8ozx8d5uRIjo5IUlNfFQFOjxboafPw/CA8WfY8xvMlYq7DWL5MwnW48aFnySRjVfHEbD/rS6He+I9MFm1uuGVOS+XUquqp6geADQTey3um6d7ob1mnab+UMdPNVduoukdVd6jqjt7e3kZdLE0SLcA2VbismT7QOESz+7mjlD2P8xNlPIW46+Cr8levnqHseQ3Xljb2tBFzgiJuriPEXadqUNoTsYbCh4FsIfB2AL/B++zLJHj+6HC1vwg4IlR85fRogWyhzLnx4KLr+cqZsSIKuCIM5cpMljy+ePt76G5L0JWO15x32fP4yv4fV8Npx4dzjOTKeH5Q0E4IPLeBbDBnzAFHoH+0QLHsIQQKuFAZJ1BV712p8GUjGoUbDw9OUPFqP0G7sXJ5MSeqNlUdFZH9BGsz50RkrfF21gJhcLcf2BgZtgE4bdo3NGiPjukXkRjQBQyb9p11Y/YDQ0C3iMSM1xOdy9JCmgmXzdRnqhBNrlQhV6xUL/QArkBZlbFcuUYtFl7gvnj7e/iNfa8ykiujEtx7uI7Q3Rbnd+94f815RENmq9oTDEyUqq8JgSFanUmysj1YFwr7r86kOD2WJ5heOTtWoOz7bOhOM5gtVs9XAc/XqlFspBIcM0Ym9BI8X3EkyHawqiPJ6bE8nm+KeSuICBu708RcYTBbpDeTrPEwAHrak/zNv7+BVtIo3Bh3HM5li3SmL+h67MbK5UUrVW29ItJtnqeBnwEOAU8AocrsLuBx8/wJYJdRqm0hEBG8ZMJyWRG5wazffLJuTDjXHcCzZm3pKeAWEekxooJbgKfMa983feuPb1ngTKV8K1V8iiZfW4hqcMdfrLuzjq4b/c4d72dbXwcigohwVW87n7zhHex+7miNRxUVPqzuStPXceGCKRIYnb7OVHXusJiGLsIAACAASURBVH9nOs66ruDirwQGaltvB7EwxY9cONeE61SNYiOxQdHzScYu/LmGOelKnl89DgSGMOZKtaR3KNCYSdzRKhqJRlZ3Ju3GymVOKz2etcCjZp3HAR5T1f8iIs8Dj4nI3cAJ4BMAqvqGiDwGvAlUgE+ravjX9yngm0CaQFTwpGn/BvBtI0QYJlDFoarDIvJF4Iem34Oh0IBAyLBXRL4EvGLmsCwCTo7kcAWODk5Q8nwSrsOqjgQJVyg6Dp6vuGZ/i4/SmYqRL/tTrhs1Wqxv5FF1JNyavUSru9I4jjCSK7OhJ0067tZcPHc/d7S6eN+ZjtOZjpMrVejLpKprWQIUyheMYsmDI4MTbF7R1nC9K+Y4ZFIX/lxXdSQ5NZon5gSS85grJGIOK9rjNR5evuzRXnf+YftceBiNRCMx1+FdfR10tyXsxspliq1A2gS2AunC4LaH/44jg5O4ItUNlJ4qV/W283PvXctX9v8Yz1eSMYe4K+TLPo5AyVNUlY5kjF+5cQuf+Zl3NZy/kdorV6pQLHsMTpQCw+YIvu/jI6ztDAQDE8UK7QkXESFbrJBJxhicKNJVV800XEd55Htv8wffP0LZq/3bcwVWtCf4nTveD9SqBEPlW7RK6Fi+TG9HkoliZco+l1tF9XLrySyX6qa27k6AqlKs+BTKHiJCd1vCViC1LG4kjE1FZWVmPeMzP/Mu3rehm93PHeXwuXGyxeBOP1uo4AggQlvCvSgVTZRGaysVz+fMeIG+TJLhiRLFSuCl9HbESJow1ieu21C9sHen4+TNYn64eL+hTt799R8cQ5Wq8RTznuKuQ2c62Lj6nXtuuOgcw/cXGqPf+vlrZuwTHneq9um4ErLn5ZA2ZjnLwyueT8EYmmLFp1TxCZ2ZktdIghNgDY9l0ZAtVljfnWJoolQNta3pDO744ULoLPRczo4VcBzBEcE3aXDWdMUuku2Gd6uD2SJD2SJrui5srDyXLRJ3HFZ1pBjPV0CCDT+5ks+arhiD2QK//+wRQElFZNNw8eJ9eIGaLFWIOULFiPpjjuAapVujTaizuZOeSqBxKalbrlRJ7KWeNma5lA4PvZli2adY8SiUfSp+YFxKFZ8jAxO8dXacN0+Pc+hs9qLN2VGs4bG0hFaEHsL1gq29FzZphmsnUWoSajqNE2qG53d4IEu2UKGnLc6aziSnRgv0j+RZ363EXIeyp2zoDuaPzlfy/GrJ7SC8d0E2va4bOpKxixbvwwtUKuZS8RVHFN+ECx2Vi/KuzfedtK0n0xxL9XPyfK16MuGjahC2Pj1W4K0z47x1JstbZ8Y5MjBBxW9+2cYaHssV53IvmFMZrXDRfWiiwFiuTNHziTkOt79/Xc34moSa/sUJNdsTbvX8csUKFc/n3Hggb467Dr7vc3a8yJaVbSRjDv2jeVITpaBgm5GnJVynmvPMEUAFxxF8lMFsEdeRixbvDw9kyRUrlDytyqEhyIDg+0pne7wm79rLJ0ZqMhI0eyd9pYy+rSfTHEvlcypVfAoVLzAyZb+6qXqiUOHQ2cDIvHkm8Gamyt6+pjPF1WszXL22kw+9o4effajxsazhsVxxLif00Mho/ca+V1nZnmCi5IHvMzRRQjUoIRB3ha/s/zHfeuEn1WqcoYHqTMcYypbwzT6dTCq4sCdcp7qJMxdRllU1zyIkXMiVfTpTMQYnPCZLF+TNrsCarjSnRgsIsKo9wUi+HOwqFaVQ8RtmPsgWKlR8v5qeJ9QWuI5U865FBQLRjATrupm2Oul0n1+zRr/eYDVK5WNlzxdzOVk35gvf1xpPplD28DW4ITo6OMFbZ7NVj+bEcOPvW1vCZfuawMhcvTbD9jWdrGhP4IiQjDvVkHMjrOGxNE2zd9LR0ENY56ZY8egfyU9bagAuNlqer4zkymSLFa7q7eDI4ASqsKEnjSrV9P65YoVjQxPc/egP8c2F3RFIxV1ijpBwgzxqH9m6gq/s/zEVz6c+MhDaHYBcWelzBcGtCgDC1BciMFms0JZwaU+6rOpIkU7EGJooUqxoNfMBXKgvFOReg2KFi/jVm6+qKu3u3PNC9f2HJRCQC2WxZ7qTvlSjP1XpikZ1k2aralvqaq/FIKAoe7VGpmREMoPZIm+dGedNY2QOn8tSqFwsCnAENq9q5+o1nVyzNsP2tZ1sWtFGzHVIxsxP3CXhOiRiM28PtXLqJrBy6tnJYsPFfc+seQShLsVxZMb0LDc+9Czd6XhVwXZ0cIKy56PA9jWdvHlmHM/XqgFwRIiZTaTARcZEgI9/YC1nx0vV9Zyw1AJcnC9JCBb7PVWuWdvJsaFJKl5w7kpwR7hpRVvNnpxGnwlQ89qhs9kpY+DpuMPKjiQbe9o4PJClPeEyNFEiX/Zq3k8qFuzl+Z26zArTfX4A4/kSZ8eD7AVTXfynkpL3ZVJ8555Ly26wXKTUC42oCCAMnXm+ki97vH0uW12XeevMOEORLBxRVrYn2L42wzVrO7l6bSfvXp2hLRls2E7GXJLx0OC4DceHiIiVU1sujf2HBvjM3leYLFVqlFtT3UmHF+SB8QKgoGLSyqSIRcpWN6I+Xl7yggVNX6kanRBfCTJLc7HBCVHgr149w9ZV7WTzZYrezDdamVSMsUKlxliId8GLOjGco38k8LQe/Ni1De90o54LBMZsKsOTL/ucGy8wNFGkVPEZmQw2Wbp1GbCRKRILRqj//MbzZU6NFog504feWrFAvlzUXiHz5d1VTC2pQtmjYCTNnu9zcjjHm2eyHDIezbGhyYZ/J4mYw7tXd7B9TSfXrOvk6jUZejNJElUD41a9mugNzeVgDY9lWsK71olCBTUlA3Lnc/R2JOjrTDW8MIWhh3v/5CAKxF1hVUeKznQcVZ32YlYfLxeg7ENMqDE6oRHwtba9Eapw/Hxuxn5BYk1hrFChM+UG8unI8SA4nqOKiAQX8I9d29AjqL+QzxRZcEVQ/4KhiemFNSAIvJ1tfZkZS4rXr8ucywaS1pkECq1YIF+qaq9GzKUCMZQyFysXRABjuXIgZTYhs0Nnx5kseg3Hb+hJG08mWJ/ZuqqdVDxGKh6EyUJD4zhXxsg0whoey7Tsfu4opYoXrH+YC6ESlACorz8TZef2Pj60qWfWF7P6eHnMdah4Hq7rUKn4F9Za6v4mnHrvoA6/CalnxYe2hMOKVIzeTIpDxXG8Og9JAM+HDT0pXOeC91ZvAOrT7Ey9lS6gWBdXL/vBGpQQGG7PfPjNlBSPrsuowvpIwbf6OUJasUC+VNRezdAq7873lYIxMNXHssePByeqi/9vnhmfcs9MZyrG9rXBuszVazvZviZDd1vighdjPBq3hUamEdbwWKbl5EiuWjCt3uMYyZX5coMLU3gRfuP0GNliBVFIJ1wyqRiJmDvjxSzccLj/0AD3/slBxJGqtBOBuAhIsObzxqmxxsUuGhAaralY1R4nlYjhChw6O35RSpsQ1xEyqcB7O3xunNse/jsOD04Qdxw6UzEO/mSYkhmbcIW1XalqSe2pqH817jjVfUMiQtxcGKYqKQ4XLnbPHx2uemHh2k2URhf/ViyQL0a116Vypby7UuXC5sxABOBxZqwQrMucHa/umWn03XQd4areDrYbI3PN2gwbe9pIJVySMdd4Mw5xt6XVcJrCGh7LtGzsaePsWLBGENSWuXAnnknFGtbLCYuy5Ute1RPJlTwqvvLpnZua3ssTJtN0BUQcPLN5rWwM4GunxgBojzts7c3w9tnxhms4zd7LpeIu5yeK5MvT+ydhluihiSLZosdEKYcrQtnXmpIJEOSJ+8lwftr5GhpECby4cF1oTWeyYUnxmS52s7n4X+kMA4tB7XWluBTvLprXLAydjeXL/Ohs1oTMxjl0JsvoFHtmVncmuXpNJ1ebdZl3rc6QSccvqMyMsbkUWr1eZQ2PZVruvWlrUElTgwSZcQmKp3UkXUoV/6LSzOFd+PmJCo4jxMTBlyB7ciYV4+s/OMZjB/tn/DKH86zpSnF6tBAsrPtKvV1xBCZLPieHJ0nFXYpeA70yQamAqTyYkFOjBeLu9GZKgVUdCXKlCucnSwhQrFxZZagjRlln1ra29XUwUbyQ3Xo2JcXn++I/G2O2mKXXzRj4+rxm+VKFY4OTJs1M4NGcOJ9r6JWn4y7vXpPh6ojSbE1XqkZhlnCvzOL/XKxXWTl1Eyx3OfUj33s72Pvi+yRdh1TcZaxQobcjwaqOJOcniwxPlulIukwUPdZ0Jjk9VgjCREjVSwm8H+XqNZ0XSY/rLzi/+fjrVVnwwHiBc9liw3Nzw4qgM3yN2+JBFoPSDManPqRYT9IV+jpTtCdc3h6YqKrVZpEtBLh4X1A43jXZE1xHKFQ82hMxHtn1wYbrSKGQoFTxyBYqFCtBaO7TO985ZQbuhcpSkF6H/z/9IznWd6f55Z/awoe3rqyGzs6O52ukzD8623jPjABbVrUHITOjNHtnbwdtJmQWGporpTCr50pK66eSU1vD0wTL3fBA7R/VWL5MW8KlN5MiWyhzerSAEmQE8FSpeBrUiYFqgs6yH1wUE65TzbWWK1WIO8LQZImJYhBG8sMqmkDcgZ62BKP5CmWz4382hKlyIDAojoDn6bQL/TOtA/V2BGULdj93lFdOjhgl2oXw36XiSq2KLfS8VrYnSMTcKUsbXLepi79+/Vz1pqCrLcjO0NuRZNDIs+Ou8K7VnQvag2jFPqK5xPO1Zm1mLF/m7bPZqtLs0JksA1PcPPW0xatezNVrM1y7roue9kQ1XNZqhVk9jfaCqSpj+TJ/f9/Ns5rL7uOxXBbRkEn4xQQulHBGKHk+67rSnBrNB/trlGq6mjAtQG8mWZ0z2Fg5TrgKU+9plH0YmChVi7vNlugY31c0LKcwzVzTHWZ1JklHKlb1OlZnAs8uKLd9eYbH08DYlL1gc2xQ5C5ZLSL39R8cu6h8da5U4ZlDg2zoSdfs2xnM5hnPl4P3L5Avw7GhiSnDJQshxLXYpNfRvGb5ksexockaldnRwYkp98xs6+uohsyuXdfFphVtJOMX9srE5nnxfy7UiNbwWGZN9IsZKq/UDy6Wnek4oJwdL9KZjlGq+CRcoeQp7Um3RtabL3vBBdeh4ebKaBhrJrm0AzjTbNJ0nUAufamIwHCuRLZQZixfZltfhoFsgXVdaYYmilR0+hBdvUfTiITroBoU0Ipm4A7LV29qUL66vn1ooogjBDnpYk5TJSEWQi2ZhSy9rs9rdm68wBunxzhUVZplq6U56tnQkw48mTWZYHPm2k46krGqoVkICrN65kKNaA2PZdZEv5hxR6phprDkcsnzScaCtaAwcSfQ8Msck+CC3eiaHV7IXUdY353mxHDjhdewjzeFW5QwayaeemgTRgxq6swF84vgmveaLVRqknluWdVOvuwFyRRNhbfQYylWPAayRTytDf01Il/2SLjORTK86cpX17eXPL86vFo3r64kRJSFkl1gIUmvo3nNsoVyTfr/t85kOTXaWKWYScWqSTOvWdvJ+zZ205dJBgv/TaSXWSjMhSClZYZHRDYC3wLWEOyf26Oqvy8iK4DvApuB48C/UNURM+Z+4G7AAz6jqk+Z9uuAbwJp4K+BX1VVFZGkOcZ1wHngF1T1uBlzF/Cb5nS+pKqPmvYtwF5gBfAy8C9VtXHCoiXOpYZYol/MsXy5Ws8mk4oxNFFgIFuityNRvYP+7L5XScddzozl8RRiIlzV18Fv/fx2Prvv1SnzRYXXaJFAlbaqI87QRBklkDT3tMWp+MrIZIlymL+N2qBXKrIIG3cCz8sRYWNPalqZc8INjIxq4K3EnEhmAfX5yv4f09uRoH+sSNELSi+sbIuDSE3Ja8VlXWeSs9ngPVamsTxhbZ4YcPhclooflH3IpIKS3Y0yRX90ey9//fq5aslvVPERkjGnpsppfa2fkIUS4pov9V00r1m+XOEn53O8fmqsqjQ7PJCdcs/M1lXt1f0y713fzTtXt5OOx654epn5oNXF+1rp8VSA/0VVXxaRDHBQRJ4G/hXwjKp+WUQ+B3wOuE9ErgF2AdcC64Dvici7VNUDvgrcA7xAYHhuA54kMFIjqnqViOwCHgJ+wRi3B4AdBNehgyLyhDFwDwEPq+peEfmameOrLfwcFiTR/TZjuTJnxvK8fGKkKUVU1GBt68vwka0rqjvlJ4semWRQcvr8ZAlHggSeSnAxD72NwYki/9g/yvkpjE6U1R0J+jIpxnIlEjHHbLLzGcuX+dRPv5PHDpykf7RQVYk5XMgUUKj4OEAy7iIiuBKIF07MsLcmuh8oZkQTjgjqK+IIFc/n9GihehxVGJosk3CFXNGj6Pm0J1x+5cYtPHawn562GEMTjfdjREnGHHIlD1eCtDxhfrb3bei+qHx16HWtaI8zlitTqHg4IiRMyDFU8LkO9KSSDT2IhRTimotKpdG8ZsOTJf7x1Bhvnh6rejQjucb/R32ZZHXx/73ru3jv+i660gmS8UDGPJeL/0uBOVO1icjjwB+an52qekZE1gL7VfXdxttBVf8P0/8p4AsEXtH3VXW7ab/TjL837KOqz4tIDDgL9BIYsJ2qeq8ZsxvYT+DpDAJrVLUiIh8x42+d7tyXoqrtzj0vcPz8BOcnyogEd8ZBcTJh9y9dN+UFoJHsdSxfprcjSbZY4exYAV+VuOMgEqSCCb9habMW4fuKmIhSM5s1+zJJvnj7e/iNfa8ykitXk4YqQX61dNxlRXuiYUbnkNAbQoKNd+P5CiXPn3FvT4jrBLJwJwy5eRfq6kBtGC3hCu9anal6JW1xhx8PTlDxp5cghJeusJxDVP3XSN3VSAk2NFFgaKJkzlFNxUjYvibDfbdtn3LD71zJmC9HyHApY0OlWa5U4Udns7zWPxaEzM5mOT402fD/Q4BU3CHmOMRc4Vdv3sbtH1w/b+llFjPzqmoTkc3AB4EXgdWqegbAGJ/wm7OewKMJ6TdtZfO8vj0cc9LMVRGRMWBltL1uzEpgVFUrDeaqP+d7CLwsNm3aNKv3uxg4OZJjLFeulhaAIKRU8XXa+H64JlDxlGNjkxQqPr6vjOVKrOtOVxf3i97UBiU0cs1c9IuVwHPY/dxRhidLFy3QV3zIFj1cp8zW3g5ePz3WcB4jqgOFkckyZV+D9akm1WjhepOvGlQ1pdaIRO/fSp5yZGCiun9pNkrrcE9SKfL5TRX6ahQmG8sFarbVmVSQ7dqs+Rw/P8lvPv46G5+rvWDPZYjrcovUzTQ2mtesfzTHP5wYrSbN/NHZLPnyxUkzBXjHyjauXtvJa6fG8DyfrnQcx3FwJPD+nnrzHP/qxi1X/PNYzrTc8IhIB/D/AL+mquPTxD0bvaDTtF/KmOnmqm1U3QPsgcDjadRnMbOxp40zY/kaVY1q4GHUX+Sid5qD2SKdKZfRfAUHqe67KfvMmBrG87WacseRmffMhJwezXN0aHJaVdhovkIqW2hKdh1u2mtCXT0lM41ptDFwOqLnoQSf1Xi+TGd66uJvjcJkYTnw02N5HBOnKwWLRxTLFV45OcLd3zrAu/o6qh7QXIS44PKEDI3GThbLfGX/Ed7Z18Hrp8b4x/7Rqpx5qj0z3el4sC6zrpP3bujigxu7WdEeJM28+f/az8qOZM3azEKWdC9mWmp4RCROYHT+VFX/wjSfE5G1kVDbgGnvBzZGhm8ATpv2DQ3ao2P6TaitCxg27TvrxuwHhoBuEYkZryc617KimgrH1+o+GR8lk4rXXOTq7zSHskWGJsrBhkxX0MaZ1xsSvYufjRcwWfKmNTqhEcuVZnEyNJZwzxf1Z+Ir/GQ4R3c6Rmc60VDdVa2mGtk8GnMcfN/HkWDdoRzJ6D00UQ4UfgLHhibnXDY9lZDh9VMjvO8LTzFZ8qrrYvXrjG+fGydXrFDygvRLbYkYvionhvPs/N39DaXscVfMnplO3ru+iw9s6mHLqjZSplJm/U3wQlrvWuq0UtUmwDeAt1T19yIvPQHcBXzZPD4eaf8zEfk9AnHBNuAlVfVEJCsiNxCE6j4J/EHdXM8DdwDPGrXbU8Bvi0iP6XcLcL957fum79664y8rdm7v49M732kuXIEiKpMKVGKjuVI1B9torlRzp7mmK8Xx8zkqvhJz5+bCPVNETs3my650nPFC4/0Ui5WxfIVf/qktDddm9r18inTcYbzgkyv75MeL3LC5h5d+MkpQL5VqQlcwNYxMRgnPV+Lu1GUdWhFua3Rh7x/JkS36xF0l5gQX+t9/9gi+r/zKT7+TgfEC33nxhFnbM95gRSlWLhYBrOtOVTdlfnBTN+9Z3xXsmWlSYbaQJN1LnZaJC0TkRuDvgde4IDL6DwTG4zFgE3AC+ISqDpsx/xvwywSKuF9T1SdN+w4uyKmfBP6dMSIp4NsE60fDwC5VPWrG/LI5HsB/VNX/bNq3ckFO/QrwS6ra2C83LEVxQUg0FU57wuX8ZInOiBz4+PkcG7pTgFTXDCpGZhzutF8oNLNJczHyka0rGwoLjg1NBMpBJFg3M+KHvkySwWwRT4NS3aHQwBFIxlx8DVIabVnVzli+zBdvf8+cCAwaCRmODk1WMzWoqSZbMSKXNV2paqXXRghw8/Y+fu59a/ngxm7WdqUvO71M9O9hKWfTnitsrrbLYCkbniiNVFKHB7KUyn51cf7yk8NcGkkXpiiouGiJyr5noiPp8N71PdUL4Y0PPcvIZImKp9ULraKUPZ9tvR3kyr4RgficGi1QMSHVmBvs71nXHRSy68sEm37nKk/a/kMDfO3vfsyJ4UlWdqR47dQYjgn1Tve9SsacqprQ95WEK7QlXA5+flpBqmWesbnaLDPSKAafSboMli8sxs+H0REC8cJ8Hb9VzEZ+MFH0eevMGJ/d92qQADQbJACNOeAQyNQrRuJ9eHCSbb3tiNlDta2vg2y+xJlsEQHWdCWrXlA0E3iUdNzl8ECWO/e8MKvwW6OQ3T+5ahXDk0VeOTnKP5wYxXWFQkWr9ZQaLbW5Av9m5zv5wIZuvvZ3RxnJFWlPXjjH0DBaFifW8FiA4IIxni9zdqxAMubQnnAZL1Rq1FnzddFXAgFBwnVmrRZbSozmKwhwfqIUeAkEBhk8E6IKNosmTdaFsufzxdvfUzUW0TBStLbPxucuXns5P1kkW6gwkC00LX3ef2iA33r8dVwnyL/39rlxPvWnL9NlxjcyMGE+PiE499Dz+dWPbqsKDOKuY9delhg21NYESy3U9sj33ubrPzhWVRF9dHsvB0+MUfY8hrIlfJRptuHMG/X505Yz9eEpx2wCdsVhXXeKTCrIap1wHbrbEtN6LY3WXvpH8vS0xemNeBWNwm9lz6d/JMfLJ0b5P588xGi+HITDpvhPeseKNq5Z18n7NnTxoXf0cO3aTr7x90f5xn89XqNqC7M0RGsPhdkx7NrL4sGu8VwGS8nwPPK9t/n9Z4/gmNLKZU+ryqe2hEtHMsbgRHHWhc0s84PDBbVaWKQuzAA+ni/RP1pg88o20nGXoYkiI7kymVSsJnnr7ueO8va58WpG6219Gd4+N87arnSNGsz3fUZzJb78P7yfgydG+P6hAd46k62RyU9HKib80f94HTdfvXrafkuhKJwlwK7xWAD4+g+OmdLKDpXInWmoJgplq5bFgRLUePnQpp6LwmXnxotVKfx4vsz5ySAvXq5YqSZvFaAzHWdtV7omhLX7uaOcHcvhOi65UoVcySNXCor1/cs/fqnhuQiB0nGqKq+FivLAE2/MaHgWSsZsS+uwhmcZEF3wHS9UiJtkBfVlBEpm/cTancWDElRFHc2VOH4+KMvgR0JwncngP3toohjIrh0o+0pbIhak91doT8Y4NjRJoezhCPz6Y/9AWzI2rZQ54QZ5zDLJGOmES1vC5fRontH89PuoppszZKFkzLa0Dmt4ljj1mQdOj+Yp+6BcHIe3BmdxMp4vk4y7dMQdxuo05+NFn7Nj+aBgn0i1RILv+5QrwXfgJ+cv1DnyFIZzZYbrsjQL8MGNXfzrG7ew4x0r+MTu5y8qjxxWT5Vp6h018x2zGQSWPguv/J3lihINW4gIq9oTwMzpYmz+3cWBQ5CUtC0RI2tSBgkXVIAA5yeD8uElLzA2Zc/nzTNZPI0kT62fV2BtV4p39rZz7doMW3vbScZj/PP3r2dtd5qNPW0XJd0sVnzScYdNK6Y2EOn4zJece2/aStlTcqUKqloN8VkV29LBGp4lzsmRXLUcAcDqrjSxJqyK9X4WBz5BQtKjgxM163W+Bpm0xTwvVIIQnE9gqGb8/1VY1ZGkLRHDcZyLQl2NjIPrCF1tcTKp+EWhMggM4qd++p0zvqed2/t48GPXBjWY8mX6MikrLFhi2FDbEqdR2EIF2k29l9dPj1kxwRKg0CDlf71XG9YUCpszSYdc0Sc6Mkw75ANvnB4jHXfpzQQbTqOhrkblFG5//7pqldQNPWkcoRqyE2BDT5r3behu6v3MVcZsy/xgDc8Sp1Hiw5jjEHeFo4MT1ugsEabLUdcWF2KuQ6HsszKTZCwX1COaLF2cDiI6j2q4TyfY0/NbP39NzbyNjEO0SurqzhSOU1sKfK4zYlsWJtbwLEHq05bc8aH1NZvv+joSPH9sZL5P0zIFYaG9K3FPIEDJA88P8u2dnyjjqVaPMdWYMKOAAjFXWNmeaLjxtFFG67DfnXteoOT5VhZtuQi7xrPECFVs0VQn+14+xb03beXv77uZe2/ayovHrdFZyJQ9pTeTvKw5QrFZWKa56AUVX8u+j2/KYUcTv0YJUhQFSTi3r+nkqt4OJutqHTX6nn3+iTfYf2ig2qd+fRGsLNoSYD2eRUx4x/naqRHyZUVVEREySZeNK9oZz5cZmihSrPh8Zu8rPLLrg+x+7qjNSrAImKqCZrOEIdSL1IthTZtI+e5GXwdPlTUdQbqcRlLmZjZ5Wlm0ZSqs4VmkhHec4/kSE8VIyhJVRvMVSufGKSs4kudsjQAAEvNJREFUCK4Dk6UKn3/iDYYnC/N30pZ5o97IeH5tKM+pe11QMqnYlFLmZjZ5LpbCanNRBM9Siw21LVLCO86pdornKkFopej5FCtB0s9TI7laI2VZNgTrNhd+V+AdK9LVsuFIkKvvHSvagnbHmVbK3GgfT703sxhk0c2EDC1XHuvxLFJOjuRwZ7nLcylW57Q0hw/ERYjFBE8VV4ShiVJ1rSfpOmzt7QCCLNQf2tQzbRG4Zr2ZhS6Ltnnh5oeWeTwi8sciMiAir0faVojI0yJy2Dz2RF67X0SOiMiPROTWSPt1IvKaee0RMTk6RCQpIt817S+KyObImLvMMQ6LyF2R9i2m72EzNtGq999qNva0ce4y1wEsS5+4E+zNibuBpLriK76vVMxP3Ny9FCo+4/lS01kCFoM30wxWADE/tNLj+Sbwh8C3Im2fA55R1S+LyOfM7/eJyDXALuBaYB3wPRF5l6p6wFeBe4AXgL8GbgOeBO4GRlT1KhHZBTwE/IKIrAAeAHYQ3MwdFJEnVHXE9HlYVfeKyNfMHF9t4WdwRYnGojPJGKWKP6vyyZblRZA6x0FRRJVCxac94VIoe4gIjgRFfGIaKN3Ojhf50Kaeptc4Fro30wxWADE/tMzjUdXngOG65tuBR83zR4GPR9r3qmpRVY8BR4DrRWQt0Kmqz2tQOOhbdWPCufYBHzXe0K3A06o6bIzN08Bt5rWbTd/64y946mPRJc/HdYSYKzavmgWg6r2ExBzBcQRXBMd1uH7zCh7Z9UE8DRSQqoH3IwIbe9L0ZZJ8554bFr0xmQ02L9z8MNdrPKtV9QyAqp4RkfAbvp7AownpN21l87y+PRxz0sxVEZExYGW0vW7MSmBUVSsN5lrwhLHoiqccG5skX/asLNpSQ9xx8HyPuBvUWnIcQc2/UlkZzZX47L5X8f2gWLYQFH5b15km5gp9kWqj9ew/NMCXn3yLY+eDENTWVe3cd9v2RW+kGqX+saq21rNQxAWNbtob7W0L2y9lzHRzXXxCIvcQhPjYtGnTVN3mjFBMcHqsgPpqjY6lStxkFtiyKhAHDGQLeL4ymC0G1UFVibnCaL7EWK6M44DnB5tMK77P6dEcPkKx7PFP/9NzZIuVGlnx/kMDfHbfq4zmypj9qBwemOA39r3K79zx/kV/kV4KIcPFxlwbnnMistZ4O2uBULPYD2yM9NsAnDbtGxq0R8f0i0gM6CII7fUDO+vG7AeGgG4RiRmvJzrXRajqHmAPBKWvZ/1OL5P6vQUCnBzJW4NjqUGAnnSc8XyZl44Ps6032DjcmY6zZVU7+bJH/0ieFe1xxvMVHEeIiUOZYF3H84OksSvbY5wdL3J2vMj67lRVVhx6AxPFShCyM5ZHVMkWrPrLcmnM9T6eJ4BQZXYX8HikfZdRqm0BtgEvmbBcVkRuMGs0n6wbE851B/CsWQd66v9v7+6D3KrOO45/f1fSat+96zcMBmOb0Li8GuxQoISYhKZASWhnSsET2jRTBiZNQ2hKWjJ0mknSmYSUyQBNy+BCmiZQXpJmWgohUAIMoSWAjU0IYGwHY3vBZg1417veV0lP/zhXu9q1dvG+SPKuns+MrKsrXfnqsXcfnXPPeQ7wcUmt8ai5jwOPxM89Eb929N9/2HhyczsX3vwUn/ne8zy7/V12d/axYcd7nnQcMNxsz9dTSycjOnozDOaM2mTEYDwxdCCTY2t7Nzve7WEgk6N9fz89A1ksLmmQjPKLwolEJHoGwkJxiSgMs66vSZJKaOjLTza+FjR0HnFryUd/uckoWYtH0j2Elsd8SW2EkWbfBO6X9GfATuBSADN7WdL9wCtABvhcPKIN4LOEEXJ1hNFsD8f77wR+IGkboaVzefxe70n6OvB8/LqvmVl+kMPfAPdK+ntgY/weFTV6pNre7n46ewbCLPL4j4ML3rtqJOCI5jTpZMSbHaEChdlwBYL8+jkH+jO0d/XTWp/i3QMDQJjDFQqGGjXYiH7nmkQ0tEIp8YJxMDys+JjWet7p7sdywzXgzCAZRT76y02KzOviv6/Vq1fb+vXrp/19C5elrksl2NbePTS/wrlC9amIY+c10FJfQ9u+HhpqEkhiS3s3tcmI+Y1pmuMSNq/v7aYvk6U2mSCTNXJmDI76P5VKCMwwxOKWOt7p7g/VqhVaQ8sXNNIzkGFhUy1Xn7v8oGs8OYPW+tSsuMbjSkfSBjNbPXr/4TK4oCqNnjWdNRv6wXYuL50IXWh7u/p4+NpzRzy3dt0vDpqH0p/JkS5oxSSjCMiSyUEUiZwZc2qTLGiqZW93P8mEmN9YE1pRBoua0yOGFa9ZsZCb/vDUEaPajl8wO0a1ucrwxFNBowst1iQiBrM+HdSNFEUilzMGitQ8Kla6Jr8E9f7eDJlsuDYTRRH1SbFoTi0Lm2qHyuHku3rb9vXwgQUNSKK7f7ilk08sPvLLTScvElpBowstLmhKk7Pi477d7KFR9+8nFxdUq0ke/ONarHTN59YcRyqRoKk2SQ4jk8uRyxnNdcmDJkeuWbGQe646k69fchKtDWm6+jM+l8WVnLd4Kmj0t9VEJFrrU+ztHqj0qbkSSkaAQsWJwUNYaXQgkyOVEAsaiy8ON94S1Jns/jCgIBmxdF5j0YRSeK2xsEKzL1HtSsUTTwWNnjXdmE7S1TdY6dNyJRZFoeUiYE5dko7esf/NEwqriOYM9nb38+Tm9qFJneOtITORrjGv0OzKzbvayuzJze2sXfcLzrnxcdauC1WCrj53OQ01CV7d00Vfxke0zXbL5tVz+xWrWNhcS99gliI9aIhQWTqKRCoRsbiljjl1KW5/6vVpX0PGKzS7cvMWTxkV69L487s30DuYe9/uFjd7SBpq7V591wYk0VAzPCTazHh1TxcfXNSECmZt7u8d4IWd+8IxwKI5tUiacgvFKzS7cvMWTxkVdml092fY+e4BejzpVJ3u/lCnds2KhZy+pJUlc+tZvqBxaB5O72CWhprEiIEnXX2DvNnRhxQGG+TMeKujb6hrdiotFK/Q7MrNE08Z5bs0uvoGadvXy6CPnK5KjenhlsVYv/SvPGfZiP17OkOlgiOaaqlJRAghwd54McCptFBmy6JububwrrYyyndp7Ons8+oEs5gEWPHS56FgwPAz45Xlz49Ma9vXgwGLW2qHWkVvdfYiC5NFp6OF4vN0XDl54imTJze3s+9AP2+8ewCfIzq7FatCJcI8nEXNaQ4MjKy+N9Yv/cL9+QoFwFDyeburD5kOmuzp3OHOE08Z3PrYFv7xiW0MFpl57maHCFAkmmsTdPZmhiqJC6ivSbB8QVgrJ1//bKJGz/nKL9zmXWJuJvJrPCX25OZ2vv3YVk86s0AqIb54/vH8wcojh/aJ0H2mSHzylEU01dawbH4DJx3VzJFz0kSRaKpNTvmivV+HcbOJt3hK7K/u31TpU3BTkE5GZHLGGUvnjujOWjZ/C3c8vZ0DA2EE2pXnLOOa839jRO2zpfMaWfuhuTzz+nvTsqyyX4dxs4Uvi3AIprIswtLrH5rms3Hlkk6Io+fWjyiq6Zw7dL4sQpnlv/m6w1c6GdGfKT7SQ8Dcxhqfz+JcCXjiKYHCCgXu8JH/10hEYnFLLclExGDWWLVkDo+83E7PYDaUqkmI5rrUmEU1nXNT44lnGmWyOV57u4uvPfgK+3oGGBjj27SbXgkBii/0RxHL5tVz/YW/OZQwCq+7NKbDhf4DA1kfhuxchVRl4pF0AXALkADuMLNvTuZ99nT2sWnXPjbu6mDjjg5eerNzRJkT9/7yrZDRVxqTEcypTdI9kBvRHZaKxHELGrjo5CMP+aK9X5R37vBSdYlHUgL4J+B3gDbgeUkPmNkr4x3XM5DhpbZONu3qCIlm5z7e3t9f9LWpRKgo3FSbpL4mSTaXY+d7vdP+WWaKdDIim8uRzx+pCD7/0eMPGgU20VFf15TwnJ1zpVN1iQc4A9hmZq8DSLoXuAQYM/Fsbe/m5K88SrbICMB0MuLEo5o5fUkrK5e0cNqSVrbs3s9X/vsVUgnFyxFDIgLLwWzvfKtLRVxw4hHs2T/grRHnXFHVmHgWA7sKHrcBvzXeAX2D2aGkc+y8ek5f0sppS1pYeUwLKxY1H7Qk8eKWOiSN+CafikRH7yB7xmglHQ5SCZEpsiLm/IYUN1260hOEc25aVGPiKTbU7KCmjKSrgKvih907brz4NYAdwFNh33zgnUP9S6N0Y3Oief4SQIoSqRELrZSaWc5y2UFAls305w507Mn1d+8/1MN3AOf93bgvmVAsZjmPxTCPRVDNcTi22M5qTDxtwDEFj48G3hr9IjNbB6wb600krS82MaoaeSyGeSyGeSwCj8PBqrFW2/PA8ZKWSaoBLgceqPA5Oedc1ai6Fo+ZZST9BfAIYTj1d83s5QqflnPOVY2qSzwAZvYT4CdTfJsxu+GqkMdimMdimMci8DiM4kVCnXPOlVU1XuNxzjlXQZ54JkHSBZJek7RN0vWVPp/pJukYSU9IelXSy5K+EO+fK+l/JG2N71sLjvlyHI/XJP1uwf5Vkl6Kn7tV5RxGPo0kJSRtlPRg/LgqYyGpRdKPJG2O/3+cVY2xkPSX8c/GryTdI6m2GuMwaWbmtwncCAMSfg0sB2qAF4ETKn1e0/wZjwROj7ebgC3ACcC3gOvj/dcDN8bbJ8RxSAPL4vgk4ueeA84izJ96GLiw0p9vkjH5IvDvwIPx46qMBfBvwJXxdg3QUm2xIExC3w7UxY/vB/602uIwlZu3eCZuqOSOmQ0A+ZI7s4aZ7TazF+LtLuBVwg/bJYRfPMT3vx9vXwLca2b9ZrYd2AacIelIoNnMnrHwU/b9gmNmDElHA78H3FGwu+piIakZOBe4E8DMBsysgyqMBWFgVp2kJFBPmAtYjXGYFE88E1es5M7iCp1LyUlaCpwGPAscYWa7ISQnIF9DZ6yYLI63R++faW4G/pqRpfaqMRbLgb3Av8bdjndIaqDKYmFmbwI3ATuB3UCnmT1KlcVhKjzxTNwhldyZDSQ1Av8BXGtm45XYGSsmMz5Wki4G2s1sw6EeUmTfrIgF4Vv+6cBtZnYacIDQpTSWWRmL+NrNJYRus6OABklXjHdIkX0zPg5T4Yln4g6p5M5MJylFSDp3m9mP491vx90DxPft8f6xYtIWb4/eP5P8NvBJSW8QulU/KukuqjMWbUCbmT0bP/4RIRFVWyzOB7ab2V4zGwR+DJxN9cVh0jzxTNysL7kTj6y5E3jVzL5d8NQDwKfj7U8D/1Ww/3JJaUnLgOOB5+Luhi5JZ8bv+ScFx8wIZvZlMzvazJYS/q0fN7MrqM5Y7AF2SfpgvOtjhOVEqi0WO4EzJdXH5/8xwnXQaovD5FV6dMNMvAEXEUZ6/Rq4odLnU4LPdw6hyf9LYFN8uwiYB/wM2Brfzy045oY4Hq9RMDIHWA38Kn7uO8STlmfiDVjD8Ki2qowFsBJYH//f+E+gtRpjAXwV2Bx/hh8QRqxVXRwme/PKBc4558rKu9qcc86VlSce55xzZeWJxznnXFl54nHOOVdWnnicc86VlSce55xzZeWJx7kKiycWPiZpk6TLJF0rqX6S7/WGpPnTfY7OTaeqXPraucPMaUDKzFZCSB7AXUBPJU/KuVLxFo9zJSCpQdJDkl6MFwu7TGEBwc2Sno4X/XpQ0kJCklkZt3i+QCg8+YSkJ8Z5/9skrY8XI/vqqKe/JOm5+PaB+PXHSvqZpF/G90skzYlbSFH8mnpJuySlJB0n6aeSNkj6uaQVJQqVq0KeeJwrjQuAt8zsVDM7Cfgp8C/AJ4APA4sAzKwduBL4uZmtNLNbCIUizzOz88Z5/xvMbDVwCvARSacUPLffzM4glGC5Od73HeD7ZnYKcDdwq5l1EhYo+0j8mk8Aj1gofLkO+LyZrQKuA/55KsFwrpAnHudK4yXgfEk3SvowoYT+djPbaqFO1V1TfP8/kvQCsBE4kbDKZd49BfdnxdtnEVZQhVBb7Jx4+z7gsnj7cuC+eDmMs4EfStoE3E5Ylda5aeHXeJwrATPbImkVobjqN4BHmaa1VuIKx9cBHzKzfZK+B9QW/vVjbFNk/wPANyTNBVYBjwMNQEf+mpNz081bPM6VgKSjgB4zu4uwWuXZwDJJx8UvWTvO4V1A0zjPNxMWYeuUdARw4ajnLyu4fybe/j9CiwbgU8DTAGbWDTwH3EKovJ21sOjfdkmXxp9Fkk4d7/M6NxHe4nGuNE4G/kFSDhgEPgvMBx6S9A7hF/9JYxy7DnhY0u5i13nM7EVJG4GXgdeB/x31krSkZwlfLPMJ7hrgu5K+RFi++jMFr78P+CFh2Ye8TwG3SfpbIEVYBO/FQ/ngzr0fXxbBuQqQtAa4zswurvS5OFdu3tXmnHOurLzF49xhLO4yS4/a/cdm9lIlzse56eCJxznnXFl5V5tzzrmy8sTjnHOurDzxOOecKytPPM4558rKE49zzrmy+n+MNv5sFECJlgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x=\"sqft_above\", y=\"price\", data=df)\n",
    "plt.ylim(0,)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "We can use the Pandas method <code>corr()</code>  to find the feature other than price that is most correlated with price."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "zipcode         -0.053203\n",
       "long             0.021626\n",
       "condition        0.036362\n",
       "yr_built         0.054012\n",
       "sqft_lot15       0.082447\n",
       "sqft_lot         0.089661\n",
       "yr_renovated     0.126434\n",
       "floors           0.256794\n",
       "waterfront       0.266369\n",
       "lat              0.307003\n",
       "bedrooms         0.308797\n",
       "sqft_basement    0.323816\n",
       "view             0.397293\n",
       "bathrooms        0.525738\n",
       "sqft_living15    0.585379\n",
       "sqft_above       0.605567\n",
       "grade            0.667434\n",
       "sqft_living      0.702035\n",
       "price            1.000000\n",
       "Name: price, dtype: float64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.corr()['price'].sort_values()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Module 4: Model Development"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Import libraries "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "We can Fit a linear regression model using the  longitude feature <code> 'long'</code> and  caculate the R^2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.00046769430149029567"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = df[['long']]\n",
    "Y = df['price']\n",
    "lm = LinearRegression()\n",
    "lm\n",
    "lm.fit(X,Y)\n",
    "lm.score(X, Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mSignature:\u001b[0m \u001b[0mlm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscore\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msample_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mDocstring:\u001b[0m\n",
       "Returns the coefficient of determination R^2 of the prediction.\n",
       "\n",
       "The coefficient R^2 is defined as (1 - u/v), where u is the residual\n",
       "sum of squares ((y_true - y_pred) ** 2).sum() and v is the total\n",
       "sum of squares ((y_true - y_true.mean()) ** 2).sum().\n",
       "The best possible score is 1.0 and it can be negative (because the\n",
       "model can be arbitrarily worse). A constant model that always\n",
       "predicts the expected value of y, disregarding the input features,\n",
       "would get a R^2 score of 0.0.\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "X : array-like, shape = (n_samples, n_features)\n",
       "    Test samples. For some estimators this may be a\n",
       "    precomputed kernel matrix instead, shape = (n_samples,\n",
       "    n_samples_fitted], where n_samples_fitted is the number of\n",
       "    samples used in the fitting for the estimator.\n",
       "\n",
       "y : array-like, shape = (n_samples) or (n_samples, n_outputs)\n",
       "    True values for X.\n",
       "\n",
       "sample_weight : array-like, shape = [n_samples], optional\n",
       "    Sample weights.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "score : float\n",
       "    R^2 of self.predict(X) wrt. y.\n",
       "\u001b[0;31mFile:\u001b[0m      ~/conda/envs/python/lib/python3.6/site-packages/sklearn/base.py\n",
       "\u001b[0;31mType:\u001b[0m      method\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lm.score?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Question  6\n",
    "Fit a linear regression model to predict the <code>'price'</code> using the feature 'sqft_living' then calculate the R^2. Take a screenshot of your code and the value of the R^2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.49285321790379316"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = df[['sqft_living']]\n",
    "Y = df['price']\n",
    "lm = LinearRegression()\n",
    "lm\n",
    "lm.fit(X,Y)\n",
    "lm.score(X, Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([287555.06702452, 677621.82640197, 172499.40418656, 506441.44998452,\n",
       "       427866.85097324])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Yhat=lm.predict(X)\n",
    "Yhat[0:5]   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Yhat=lm.predict(X)\n",
    "Yhat[0:5]   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-43580.74309447361"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lm.intercept_ # a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([280.6235679])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lm.coef_ # b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "Yhat = a + b  X\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Question 7\n",
    "Fit a linear regression model to predict the 'price' using the list of features:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "features = [\"floors\", \"waterfront\",\"lat\" ,\"bedrooms\" ,\"sqft_basement\" ,\"view\" ,\"bathrooms\",\"sqft_living15\",\"sqft_above\",\"grade\",\"sqft_living\"]   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "the calculate the R^2. Take a screenshot of your code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "         normalize=False)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lm.fit(df[features], df['price'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.65769516660375"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lm.score(df[features], df['price'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-32390308.398629047"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lm.intercept_ # 常数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-2.92790793e+04,  6.02002523e+05,  6.72993098e+05, -2.59674430e+04,\n",
       "        6.44145024e+01,  6.70824472e+04, -3.22416757e+03,  4.44293114e+00,\n",
       "        6.49412868e+01,  8.20072277e+04,  1.29355789e+02])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lm.coef_ # 系数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### this will help with Question 8\n",
    "\n",
    "Create a list of tuples, the first element in the tuple contains the name of the estimator:\n",
    "\n",
    "<code>'scale'</code>\n",
    "\n",
    "<code>'polynomial'</code>\n",
    "\n",
    "<code>'model'</code>\n",
    "\n",
    "The second element in the tuple  contains the model constructor \n",
    "\n",
    "<code>StandardScaler()</code>\n",
    "\n",
    "<code>PolynomialFeatures(include_bias=False)</code>\n",
    "\n",
    "<code>LinearRegression()</code>\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "Input=[('scale',StandardScaler()),('polynomial', PolynomialFeatures(include_bias=False)),('model',LinearRegression())]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Question 8\n",
    "Use the list to create a pipeline object,  predict the 'price', fit the object using the features in the list <code> features </code>, then fit the model and calculate the R^2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(memory=None,\n",
       "     steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "         normalize=False))])"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipe=Pipeline(Input)\n",
    "pipe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
      "  return self.partial_fit(X, y)\n",
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
      "  return self.fit(X, y, **fit_params).transform(X)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Pipeline(memory=None,\n",
       "     steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "         normalize=False))])"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipe.fit(X,Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/pipeline.py:511: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
      "  Xt = transform.transform(Xt)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.5327430940591443"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipe.score(X,Y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Module 5: MODEL EVALUATION AND REFINEMENT"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "import the necessary modules  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "done\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.model_selection import train_test_split\n",
    "print(\"done\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "we will split the data into training and testing set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of test samples : 3242\n",
      "number of training samples: 18371\n"
     ]
    }
   ],
   "source": [
    "features =[\"floors\", \"waterfront\",\"lat\" ,\"bedrooms\" ,\"sqft_basement\" ,\"view\" ,\"bathrooms\",\"sqft_living15\",\"sqft_above\",\"grade\",\"sqft_living\"]    \n",
    "X = df[features ]\n",
    "Y = df['price']\n",
    "\n",
    "x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.15, random_state=1)\n",
    "\n",
    "\n",
    "print(\"number of test samples :\", x_test.shape[0])\n",
    "print(\"number of training samples:\",x_train.shape[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Question 9\n",
    "Create and fit a Ridge regression object using the training data, setting the regularization parameter to 0.1 and calculate the R^2 using the test data. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import Ridge"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "RigeModel=Ridge(alpha=0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Ridge(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=None,\n",
       "   normalize=False, random_state=None, solver='auto', tol=0.001)"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RigeModel.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "yhat = RigeModel.predict(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "predicted: [651781.17964158 514958.12791318 794388.65874943 702639.20038573]\n",
      "test set : [ 459000.  445000. 1057000.  732350.]\n"
     ]
    }
   ],
   "source": [
    "print('predicted:', yhat[0:4])\n",
    "print('test set :', y_test[0:4].values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/linear_model/ridge.py:125: LinAlgWarning: scipy.linalg.solve\n",
      "Ill-conditioned matrix detected. Result is not guaranteed to be accurate.\n",
      "Reciprocal condition number7.292204e-17\n",
      "  overwrite_a=True).T\n"
     ]
    }
   ],
   "source": [
    "Rsqu_test = []\n",
    "Rsqu_train = []\n",
    "dummy1 = []\n",
    "ALFA = 10 * np.array(range(0,1000))\n",
    "for alfa in ALFA:\n",
    "    RigeModel = Ridge(alpha=alfa) \n",
    "    RigeModel.fit(x_train, y_train)\n",
    "    Rsqu_test.append(RigeModel.score(x_test, y_test))\n",
    "    Rsqu_train.append(RigeModel.score(x_train, y_train))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f21487096d8>"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAJNCAYAAAD6c1l4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd5idVb238XtNyyST3nvvM+mhhkBCMBSlFwGpHqp4sCKgIqKinEM5iICKICLmFSNVkaZICVKTEEgD0gshpPeEZDLr/WOHGEPKlP3sPeX+XFeuPbP3etbz29f882Wxnt8KMUYkSZIkVV1OtguQJEmSagvDtSRJkpQmhmtJkiQpTQzXkiRJUpoYriVJkqQ0MVxLkiRJaZKX7QLSqWXLlrFr167ZLkOSJEm12KRJk1bEGFvt6bNaFa67du3KxIkTs12GJEmSarEQwoK9fea2EEmSJClNDNeSJElSmhiuJUmSpDSpVXuuJUmSsmnbtm0sXryYLVu2ZLsUpUFhYSEdO3YkPz+/3NcYriVJktJk8eLFNGrUiK5duxJCyHY5qoIYIytXrmTx4sV069at3Ne5LUSSJClNtmzZQosWLQzWtUAIgRYtWlT4/0IYriVJktLIYF17VOZvabiWJEmqwxo2bAjAkiVLOO200/Y4ZtSoUfs9S+T2229n06ZNO38/7rjjWLNmTfoK3eHTevdmzZo13H333Wm/b3kZriVJkkT79u15+OGHK3397uH6qaeeomnTpukorUIM15IkSUqLq6+++j+C5Q9/+ENuvfVWNmzYwJgxYxg6dCgDBgzgiSee+My18+fPp6SkBIDNmzdz5plnMnDgQL74xS+yefPmneMuv/xyhg8fTnFxMddffz0Ad9xxB0uWLGH06NGMHj0aSJ2cvWLFCgBuu+02SkpKKCkp4fbbb995v379+nHxxRdTXFzM2LFj/+M+n5o3bx6HHHIIBxxwANddd93O9/f2na655hrmzJnD4MGDueqqq8r13dMqxlhr/g0bNixKkiRly4wZM7J6/8mTJ8fDDz985+/9+vWLCxYsiNu2bYtr166NMca4fPny2KNHj1hWVhZjjLGoqCjGGOO8efNicXFxjDHGW2+9NV544YUxxhjfeeedmJubG996660YY4wrV66MMcZYWloajzjiiPjOO+/EGGPs0qVLXL58+c57f/r7xIkTY0lJSdywYUNcv3597N+/f5w8eXKcN29ezM3NjW+//XaMMcbTTz89Pvjgg5/5Tscff3x84IEHYowx3nnnnTvr3dt32vV77Gtcee3pbwpMjHvJo7bikyRJSsANf53OjCXr0jpn//aNuf744r1+PmTIEJYtW8aSJUtYvnw5zZo1o3Pnzmzbto3vfve7vPzyy+Tk5PDhhx/y8ccf07Zt2z3O8/LLL3PllVcCMHDgQAYOHLjzs/Hjx3PPPfdQWlrKRx99xIwZM/7j89298sornHzyyRQVFQFwyimnMGHCBE444QS6devG4MGDARg2bBjz58//zPX/+te/eOSRRwA499xzufrqq4HUAvGevtPu9jZub9+9qgzXkiRJtchpp53Gww8/zNKlSznzzDMBGDduHMuXL2fSpEnk5+fTtWvX/baY21OnjHnz5nHLLbfw1ltv0axZMy644IL9zpNa6N2zevXq7fw5Nzd3j9tC9lZLeb9TZb57VRiuJUmSErCvFeYknXnmmVx88cWsWLGCl156CYC1a9fSunVr8vPzeeGFF1iwYME+5zj88MMZN24co0ePZtq0abz77rsArFu3jqKiIpo0acLHH3/M008/zahRowBo1KgR69evp2XLlp+Z64ILLuCaa64hxshjjz3Ggw8+WO7vM2LECB566CHOOeccxo0bt/P9vX2nT+vY37ikGK4lSZJqkeLiYtavX0+HDh1o164dAF/60pc4/vjjGT58OIMHD6Zv3777nOPyyy/nwgsvZODAgQwePJgDDzwQgEGDBjFkyBCKi4vp3r07I0aM2HnNJZdcwrHHHku7du144YUXdr4/dOhQLrjggp1zXHTRRQwZMmSPW0D25Oc//zlnn302P//5zzn11FN3vr+379SiRQtGjBhBSUkJxx57LFdffXWFvntVhX0t1dc0w4cPj/vrwShJkpSUmTNn0q9fv2yXoTTa0980hDApxjh8T+MTbcUXQjgmhPB+CGF2COGavYwZFUKYEkKYHkJ4aZf3m4YQHg4hvBdCmBlCOCTJWiVJkqSqSmxbSAghF7gL+BywGHgrhPCXGOOMXcY0Be4GjokxLgwhtN5lip8Dz8QYTwshFAANkqpVkiRJSockV64PBGbHGOfGGLcCDwEn7jbmbODRGONCgBjjMoAQQmPgcOC+He9vjTGm//xMSZIkKY2SDNcdgEW7/L54x3u76g00CyG8GEKYFEI4b8f73YHlwP0hhLdDCPeGEIoSrFWSJEmqsiTD9WcbEsLuT0/mAcOAzwNHA9eFEHrveH8o8MsY4xBgI7C3PduXhBAmhhAmLl++PG3FS5IkSRWVZLheDHTa5feOwJI9jHkmxrgxxrgCeBkYtOP9xTHGN3aMe5hU2P6MGOM9McbhMcbhrVq1SusXKJcYYevWzN9XkiRJ1U6S4fotoFcIoduOBxLPBP6y25gngJEhhLwQQgPgIGBmjHEpsCiE0GfHuDHADKqbGOG88+DLX079LEmSlEVr1qzh7rvvrtS1xx13HGvW7PsRtx/84Af84x//qNT8u+vatSsDBgxgwIAB9O/fn+9///t88skn+7ymKt8vUxIL1zHGUuCrwLPATGB8jHF6COGyEMJlO8bMBJ4B3gXeBO6NMU7bMcV/A+NCCO8Cg4GfJlVrpYUAffvCuHHw6KPZrkaSJNVx+wqf27dv3+e1Tz31FE2bNt3nmB/96EccddRRla5vdy+88AJTp07lzTffZO7cuVxyySX7HF+nwzVAjPGpGGPvGGOPGOONO977VYzxV7uMuTnG2D/GWBJjvH2X96fs2O4xMMZ4UoxxdZK1Vtq110KbNvCnP2W7EkmSVMddc801zJkzh8GDB3PVVVfx4osvMnr0aM4++2wGDBgAwEknncSwYcMoLi7mnnvu2Xlt165dWbFiBfPnz6dfv35cfPHFFBcXM3bsWDZv3gzABRdcwMMPP7xz/PXXX8/QoUMZMGAA7733HgDLly/nc5/7HEOHDuXSSy+lS5curFixYp91N2zYkF/96lc8/vjjrFq1ig0bNjBmzJidcz/xxBN7/H57G5dNiYbrOiEnB044AZ5+GkpLs12NJEmqw2666SZ69OjBlClTuPnmmwF48803ufHGG5kxI7XD9re//S2TJk1i4sSJ3HHHHaxcufIz88yaNYsrrriC6dOn07RpUx555JE93q9ly5ZMnjyZyy+/nFtuuQWAG264gSOPPJLJkydz8skns3DhwnLV3rhxY7p168asWbMoLCzkscceY/Lkybzwwgt861vfIsb4me+3t3HZlNghMnXK6NHwm9/AtGkweHC2q5EkSdXB178OU6akd87Bg+H22/c/bhcHHngg3bp12/n7HXfcwWOPPQbAokWLmDVrFi1atPiPa7p168bgHZlm2LBhzJ8/f49zn3LKKTvHPLpji+wrr7yyc/5jjjmGZs2albvWT4NxjJHvfve7vPzyy+Tk5PDhhx/y8ccf73H8nsa1bdu23PdMN8N1Ohx8cOr19dcN15IkqVopKvr3USEvvvgi//jHP3jttddo0KABo0aNYsuWLZ+5pl69ejt/zs3N3bktZG/jcnNzKd3xf/Aru3K8fv165s+fT+/evRk3bhzLly9n0qRJ5Ofn07Vr1z3WWd5xmWS4ToeuXaFVK3jrLbjssmxXI0mSqoMKrjCnQ6NGjVi/fv1eP1+7di3NmjWjQYMGvPfee7z++utpr+Gwww5j/PjxXH311Tz33HOsXr3/x+Y2bNjAV77yFU466SSaNWvG2rVrad26Nfn5+bzwwgssWLAA+Oz329u4bHLPdTqEAAMGpLaFSJIkZUmLFi0YMWIEJSUlXHXVVZ/5/JhjjqG0tJSBAwdy3XXXcfCn//c9ja6//nqee+45hg4dytNPP027du1o1KjRHseOHj2akpISDjzwQDp37syvf/1rAL70pS8xceJEhg8fzrhx4+jbt+8ev9/exmVTyPam73QaPnx4nDhxYnZu/vWvw733wrp1qYccJUlSnTNz5kz69euX7TKy6pNPPiE3N5e8vDxee+01Lr/8cqake+95Bu3pbxpCmBRjHL6n8W4LSZeSEti4ERYsgF0eGpAkSapLFi5cyBlnnEFZWRkFBQX85je/yXZJGWW4TpeSktTrtGmGa0mSVGf16tWLt99+O9tlZI37F9Klf//Uq/uuJUmS6izDdbo0bgxduhiuJUmq42rT82x1XWX+lobrdCouNlxLklSHFRYWsnLlSgN2LRBjZOXKlRQWFlboOvdcp1OfPvDii1BWZscQSZLqoI4dO7J48WKWL1+e7VKUBoWFhXTs2LFC1xiu06lXL9i0CZYsgQr+ISRJUs2Xn5//H0eNq+5xeTWdevdOvc6ald06JEmSlBWG63Tq1Sv1+sEH2a1DkiRJWWG4TqeOHaGw0JVrSZKkOspwnU45OdCzp+FakiSpjjJcp1uvXm4LkSRJqqMM1+nWuzfMmQPbt2e7EkmSJGWY4TrdevWCbdtgwYJsVyJJkqQMM1ynm+34JEmS6izDdbrZjk+SJKnOMlynW5s20KiRK9eSJEl1kOE63UJIrV7Pnp3tSiRJkpRhhusk2OtakiSpTjJcJ6FnT5g/P9U1RJIkSXWG4ToJPXtCaSksXJjtSiRJkpRBhusk9OyZenXftSRJUp1iuE6C4VqSJKlOMlwnoW1baNDAcC1JklTHGK6TEEJq9dpwLUmSVKcYrpNiuJYkSapzDNdJ6dUL5s6F7duzXYkkSZIyxHCdlJ49YetWWLw425VIkiQpQwzXSfm0Y4gnNUqSJNUZhuuk2I5PkiSpzjFcJ6V9eygsNFxLkiTVIYbrpOTkQI8ehmtJkqQ6xHCdJNvxSZIk1SmG6yT17Alz5kBZWbYrkSRJUgYYrpPUsyds2QJLlmS7EkmSJGWA4TpJdgyRJEmqUwzXSTJcS5Ik1SmG6yR16gQFBYZrSZKkOsJwnaTcXOje3VMaJUmS6gjDddJsxydJklRnGK6T9mm4jjHblUiSJClhhuuk9ewJmzbB0qXZrkSSJEkJM1wnzY4hkiRJdYbhOmmGa0mSpDrDcJ20Ll0gL89wLUmSVAcYrpOWlwdduxquJUmS6gDDdSbYjk+SJKlOMFxnQq9etuOTJEmqAwzXmdCzJ6xbB8uXZ7sSSZIkJchwnQl2DJEkSaoTDNdV9Oz0pTz57pJ9DzJcS5Ik1Ql52S6gpvvD6wtYu3kbXxjYfu+DunaFnBzDtSRJUi3nynUVdW1RxLwVG4n7elixoCDV79pwLUmSVKsZrquoa8si1m8pZfWmbfseaDs+SZKkWs9wXUVdWzQAYP7KjfseaLiWJEmq9QzXVdSlRREAC8oTrlevhlWrMlCVJEmSssFwXUWdmtcnJ8D8FZv2PdCOIZIkSbWe4bqK6uXl0r5p/fJtCwGYNSv5oiRJkpQVhus06NqiiPkr97Ny3b07hODKtSRJUi1muE6Dri0bMH/FflauCwuhUyfDtSRJUi1muE6DLs2LWLt5G2ttxydJklSnGa7ToFPz+gAsWl2OhxoN15IkSbWW4ToNOjVP9bpetKoc4XrFClizJgNVSZIkKdMM12nwabheWJ5wDTBnTsIVSZIkKRsM12nQuDCfZg3yyx+uP/gg+aIkSZKUcYbrNOnUvAGLVm/e96BevVLt+N5/PzNFSZIkKaMM12nSqXmD/e+5LiyEbt3gvfcyU5QkSZIyynCdJp2bN2Dx6k1sL4v7Hti3r+FakiSpljJcp0mnZg3Ytj2ydN2WfQ/s2ze1LaSsLDOFSZIkKWMM12nSubzt+Pr2hS1bYOHCDFQlSZKkTDJcp0nn8rbj69s39erWEEmSpFrHcJ0m7ZoWkhPKsXLdr1/qdebM5IuSJElSRhmu0yQ/N4f2TevvP1y3bAktWrhyLUmSVAsZrtOoc/MG+98WAnYMkSRJqqUM12mUCtf7OUgGDNeSJEm1lOE6jTo1b8CKDZ+waWvpvgf27QvLlsGqVZkpTJIkSRlhuE6jTjs6hize3zHon3YM8Rh0SZKkWsVwnUY72/GttB2fJElSXWS4TqNOzeoD5eh13a0bFBTYjk+SJKmWMVynUfOiAooKclm0ej/hOjcXevd25VqSJKmWMVynUQiBTs0b7L/XNdgxRJIkqRYyXKdZhXpdz50Ln3ySfFGSJEnKCMN1mqVWrjcTY9z3wL59Yft2mDMnM4VJkiQpcYbrNOvcvAGbt21nxYat+x74accQH2qUJEmqNQzXabazHd/+toZ8Gq5nzEi4IkmSJGWK4TrNOjVPtePb70ONRUXQvTtMm5aBqiRJkpQJhus069gstXJdro4hxcUwfXrCFUmSJClTDNdpVpifS5vG9crXMaSkJHUE+tb97M+WJElSjZBouA4hHBNCeD+EMDuEcM1exowKIUwJIUwPIby022e5IYS3QwhPJllnupW7HV9JCZSWwgcfJF+UJEmSEpdYuA4h5AJ3AccC/YGzQgj9dxvTFLgbOCHGWAycvts0XwNqXDuNTs3KeZBMcXHq1a0hkiRJtUKSK9cHArNjjHNjjFuBh4ATdxtzNvBojHEhQIxx2acfhBA6Ap8H7k2wxkR0at6Aj9ZtYWtp2b4H9umTOgrdhxolSZJqhSTDdQdg0S6/L97x3q56A81CCC+GECaFEM7b5bPbge8A+0mo1U/n5g2IET5cs3nfAwsLoVcvw7UkSVItkZfg3GEP7+1+bGEeMAwYA9QHXgshvE4qdC+LMU4KIYza501CuAS4BKBz585VrTktOu3S67pby6J9Dy4pgXfeyUBVkiRJSlqSK9eLgU67/N4RWLKHMc/EGDfGGFcALwODgBHACSGE+aS2kxwZQvjDnm4SY7wnxjg8xji8VatW6f4OlfLpQTLl3nc9ezZs3s8qtyRJkqq9JMP1W0CvEEK3EEIBcCbwl93GPAGMDCHkhRAaAAcBM2OM18YYO8YYu+647p8xxnMSrDWtWjeqR0FeTvnCdUkJxOgx6JIkSbVAYuE6xlgKfBV4llTHj/ExxukhhMtCCJftGDMTeAZ4F3gTuDfGWOM3IOfkBDo2q1/+dnxgxxBJkqRaIMk918QYnwKe2u29X+32+83AzfuY40XgxQTKS1S5e1337AkFBT7UKEmSVAt4QmNCOjcvZ6/rvDzo29dwLUmSVAsYrhPSuXkD1m0pZe2mbfsfXFICU6cmX5QkSZISZbhOSMdm/27Ht1+DBsGiRbBqVcJVSZIkKUmG64TsbMe3upzhGuDddxOsSJIkSUkzXCekU/P6QAVWrgGmTEmwIkmSJCXNcJ2QRoX5NGuQX75w3bYttG7tSY2SJEk1nOE6QeXuGAIweLDhWpIkqYYzXCeoU0XC9aBBqYNktpWju4gkSZKqJcN1gjo3b8Di1ZvZXhb3P3jQINi6Fd5/P/nCJEmSlAjDdYI6NW9AaVnko7Wb9z/404ca3RoiSZJUYxmuE7SzHd+qcoTrPn1Sx6AbriVJkmosw3WC/h2uy7HvOj8fiosN15IkSTWY4TpB7ZoUkpsTyteOD1JbQwzXkiRJNZbhOkF5uTm0b1rIgoqE648/hqVLky1MkiRJiTBcJ6xriyIWrNxYvsGDB6dePalRkiSpRjJcJ6x7yyLmLd9IjOVoxzdkSOp18uRki5IkSVIiDNcJ69ayiPWflLJiw9b9D27SBHr2hEmTki9MkiRJaWe4Tli3Vg0BmLeinFtDhg0zXEuSJNVQhuuEdW9ZBMDc5RvKd8GwYbBgAaxcmWBVkiRJSoLhOmHtm9anIC+nYivX4Oq1JElSDWS4TlhuTqBriwbMLW+4Hjo09Wq4liRJqnEM1xnQrWVR+VeumzaFHj0M15IkSTWQ4ToDurVsyIKVGyndXla+C3yoUZIkqUYyXGdA91ZFbNse+XDN5vJdMGwYzJ/vQ42SJEk1jOE6A3Z2DKnoQ40eJiNJklSjGK4zoNuOcD1vuQ81SpIk1WaG6wxoXlRA48I85q4oZ6/rZs2ge3eYODHZwiRJkpRWhusMCCHQvVXD8ncMATjgAHjzzeSKkiRJUtoZrjOke8ui8m8LATj4YFi0CJYsSa4oSZIkpZXhOkO6tSxiydotbN66vXwXHHRQ6vWNN5IrSpIkSWlluM6Q7q0aAjBneTn3XQ8ZAvn58PrrCVYlSZKkdDJcZ0ivNhUM14WFMHiwK9eSJEk1iOE6Q7q2KCI3JzDr43KGa0jtu544EUpLkytMkiRJaWO4zpCCvBy6tmjArGXry3/RQQfBxo0wfXpyhUmSJCltDNcZ1LN1Q2Yvq+DKNbg1RJIkqYYwXGdQr9aNmL9yE1tLy8p3Qffu0LKlDzVKkiTVEIbrDOrVpiHbyyLzV5az33UIqa0hrlxLkiTVCIbrDOrZOtUxpEIPNR50EMycCWvXJlSVJEmS0sVwnUE9WjUkBCr+UGOM8NZbyRUmSZKktDBcZ1Bhfi6dmjVgVkUeajzwwNSr+64lSZKqPcN1hvVq3ZA5FQnXTZtC376Ga0mSpBrAcJ1hPds0ZO7yjZRuL2fHEIARI+DVV6GsAtdIkiQp4wzXGdazVUO2bi9j4apN5b9o5EhYvdrDZCRJkqo5w3WG9WrTCKBi+64POyz1OmFCAhVJkiQpXQzXGfbvdnwV6BjSvTu0awevvJJQVZIkSUoHw3WGNayXR4em9fmgIr2uQ0htDZkwIdWWT5IkSdWS4ToL+rZtxHtL11XsopEjYfFiWLAgmaIkSZJUZYbrLOjTthFzl2/kk9Lt5b9o5MjUq/uuJUmSqi3DdRb0bdeY0rLInGUby39RSQk0aWK4liRJqsYM11nQr22qY8j7H1dga0hubqrfteFakiSp2jJcZ0HXlkUU5Obw3kcV6BgCqa0h770Hy5cnU5gkSZKqxHCdBfm5OfRs3ZCZSysRrsGWfJIkSdWU4TpL+rZrxPsV7RgyfDjUq+fWEEmSpGrKcJ0l/do25uN1n7Bq49byX1SvHhx0ELz8cnKFSZIkqdIM11nSZ8dDjRXudz16NEyeDKtXJ1CVJEmSqsJwnSV92+3oGFLRfddjxqROaXzppQSqkiRJUlUYrrOkVcN6tCgqqHjHkIMOggYN4PnnkylMkiRJlWa4zpIQAn3aNuK9jysYrgsKUl1DDNeSJEnVjuE6i/q2bcz7S9exvSxW7MIxY2DmTPjoo2QKkyRJUqUYrrOouH1jtmwrY96KDRW78MgjU6///Gf6i5IkSVKlGa6zqLhDYwCmL6lgx5DBg6FZM7eGSJIkVTOG6yzq2aoh9fJymPbh2opdmJubasn3/POpziGSJEmqFgzXWZSXm0Pfdo2Z9mEFV64htTVk4UKYOzf9hUmSJKlSDNdZVtK+MdOWrCVWdAV6zJjUq1tDJEmSqg3DdZaVdGjC+i2lLFq1uWIX9ukD7dsbriVJkqoRw3WWFbdPPdQ4bUkF912HkFq9fv552L49gcokSZJUUYbrLOvdphF5OaHiDzUCHHMMrFwJkyalvzBJkiRVmOE6ywrzc+nVphHTKtqOD2Ds2NQK9tNPp78wSZIkVZjhuhooad+Y6R9W4qHGli3hwAMN15IkSdWE4boaKOnQhJUbt/Lxuk8qfvExx8Cbb6a2h0iSJCmrDNfVwM6HGiuz7/rYY1MHyTz3XJqrkiRJUkUZrquBfu0akxPg3cVrKn7x8OHQooVbQyRJkqoBw3U1UFQvj95tGvHO4kqsXOfmwtFHw7PPQllZ+ouTJElSuRmuq4lBHZvyzuI1FX+oEVL7rpctg7ffTn9hkiRJKjfDdTUxuHNT1mzaxoKVmyp+8dFHp17dGiJJkpRVhutqYlDHpgC8U5l9161bp/ZeG64lSZKyynBdTfRu05D6+bm8vbAS4Rrg85+H11+H5cvTW5gkSZLKzXBdTeTl5jCgQ5PKrVwDnHhi6oHGJ59Mb2GSJEkqN8N1NTKoUxOmL1nH1tJKdP0YPBg6d4Ynnkh/YZIkSSoXw3U1MqhTU7aWlvH+0vUVvzgEOOGE1GEymyrxUKQkSZKqzHBdjQzulHqoccqi1ZWb4MQTYfNm+Pvf01iVJEmSystwXY10aFqflg0LmLKoEofJABxxBDRp4tYQSZKkLDFcVyMhBAZ1bFr5lev8/FTXkCefhO3b01ucJEmS9stwXc0M7dKMOcs3smbT1spNcOKJqXZ8r72W3sIkSZK0X4bramZYl2YATFpQydXrY45JrWC7NUSSJCnjDNfVzKCOTcnLCUysbLhu3BiOPBIefxxiTG9xkiRJ2ifDdTVTvyCX4g5NmDS/kuEa4NRTYfZsePfd9BUmSZKk/TJcV0PDuzTjncVrKneYDMDJJ0NuLowfn97CJEmStE+G62poeJdmfFJaxrQllWzJ17JlamvI+PFuDZEkScogw3U1NKzrjocaq7I15IwzUltDpkxJU1WSJEnaH8N1NdS6USFdWjRg4oJVlZ/ErSGSJEkZZ7iupoZ1acakBauJld3W0aIFjBnj1hBJkqQMMlxXU8O7NGfFhq0sWLmp8pOccQbMnQtvv52+wiRJkrRXhutq6oAd+67fnFeFrSEnnQR5eW4NkSRJypBEw3UI4ZgQwvshhNkhhGv2MmZUCGFKCGF6COGlHe91CiG8EEKYueP9ryVZZ3XUs3VDmhcV8Pq8lZWfpEULOOoot4ZIkiRlSGLhOoSQC9wFHAv0B84KIfTfbUxT4G7ghBhjMXD6jo9KgW/FGPsBBwNX7H5tbRdC4ODuzXlj7qrK77sGOPNMmDcPXnstfcVJkiRpj5JcuT4QmB1jnBtj3Ao8BJy425izgUdjjAsBYozLdrx+FGOcvOPn9cBMoEOCtVZLB3dvwYdrNrN49ebKT3LKKVC/PvzhD+krTJIkSXuUZLjuACza5ffFfDYg9waahRBeDCFMCiGct/skIYSuwBDgjYTqrLYO7t4CgNfmVmFrSKNGqZ4ms+AAACAASURBVL3Xf/oTbN2apsokSZK0J0mG67CH93bf35AHDAM+DxwNXBdC6L1zghAaAo8AX48xrtvjTUK4JIQwMYQwcfny5empvJro9em+66qEa4BzzoFVq+Cpp9JTmCRJkvYoyXC9GOi0y+8dgSV7GPNMjHFjjHEF8DIwCCCEkE8qWI+LMT66t5vEGO+JMQ6PMQ5v1apVWr9AtqVt3/XYsdC6NTz4YPqKkyRJ0mckGa7fAnqFELqFEAqAM4G/7DbmCWBkCCEvhNAAOAiYGUIIwH3AzBjjbQnWWO2lZd91Xh6cdRY8+SSsrsKR6pIkSdqnxMJ1jLEU+CrwLKkHEsfHGKeHEC4LIVy2Y8xM4BngXeBN4N4Y4zRgBHAucOSONn1TQgjHJVVrdZaWfdcA556b2nP95z+noSpJkiTtSajSdoNqZvjw4XHixInZLiOtYowM+8k/GNWnFbedMbgqE0H//tCyJUyYkL4CJUmS6pgQwqQY4/A9feYJjdVcCIFDerTg1dkrq7bvOoTU6vUrr8Ds2ekrUJIkSTsZrmuAkT1bsnTdFmYv21C1ic4/H3Jy4Le/TU9hkiRJ+g+G6xrgsF4tAXh51oqqTdShAxx3HNx/P5SWpqEySZIk7cpwXQN0bNaA7q2KmDArDX28L7oIli6157UkSVICDNc1xOG9WvH63JV8Urq9ahMddxy0bQv33puewiRJkrST4bqGGNmrJVu2lTFpQRX7VOfnwwUXwN/+Bh9+mJbaJEmSlGK4riEO7t6C/NzAhKruuwb48pehrAweeKDqc0mSJGknw3UNUVQvjyGdm6Vn33WvXjBqFNx3XypkS5IkKS0M1zXI4b1aMu3Ddazc8EnVJ7v4Ypg7F/7+96rPJUmSJMBwXaOM7NUKgFdmp2FryKmnQuvWcNddVZ9LkiRJgOG6Rinp0ISmDfLTs++6Xr3U6vWTT8L8+VWfT5IkSYbrmiQ3J3BYz5a89MFyysqqcBT6py69NHUs+i9/WfW5JEmSZLiuacb0a83y9Z8w9cO1VZ+sUyc46aTUg41btlR9PkmSpDrOcF3DjOrdmpwAz7+3LD0TXnEFrFwJf/pTeuaTJEmqwwzXNUyzogKGdWnG8zM/Ts+Eo0dDv35w553pmU+SJKkOM1zXQEf2bcP0Jev4aO3mqk8WQmr1euJEePXVqs8nSZJUhxmua6Cj+rUG4PmZadoacv750KwZ3HpreuaTJEmqowzXNVDP1g3p3LwB/0zXvuuGDeHyy+Gxx2D27PTMKUmSVAcZrmugEAJH9m3Nv2avYPPW7emZ9Ktfhfx8+L//S898kiRJdZDhuoY6ql8bPiktS89pjQDt2sE558D996e6h0iSJKnCDNc11IHdmtOwXl76uoYAfPObsHmzh8pIkiRVkuG6hirIy+GI3q34x8xlbE/HaY0AxcVw7LHwi194qIwkSVIlGK5rsGNK2rJiwydMWrA6fZN++9uwbBn84Q/pm1OSJKmOMFzXYKP7tqYgL4enpn6UxklHw5AhcPPNsD1ND0tKkiTVEYbrGqxhvTyO6N2KZ6YtpSxdW0NCgO9+Fz74AP785/TMKUmSVEcYrmu44wa0Zem6Lby9aE36Jj3lFOjfH37yEygrS9+8kiRJtZzhuoYb068N+bmBp9O5NSQnB77/fZg+PXWwjCRJksrFcF3DNS7MZ2SvVjw9bSkxpmlrCMAZZ0Dv3vDjH0M655UkSarFDNe1wLElbflwzWamfrg2fZPm5sL3vgfvvAN//Wv65pUkSarFDNe1wOf6tyEvJ/DU1KXpnfjss6F7d1evJUmSyslwXQs0bVDAoT1b8tTUj9K7NSQvD669FiZOhGeeSd+8kiRJtdQ+w3UIITeEcGkI4cchhBG7ffb9ZEtTRRw/sB0LV21Kb9cQgPPOg65dUw842jlEkiRpn/a3cv1r4AhgJXBHCOG2XT47JbGqVGHHlLSlXl4OT7z9YXonLiiAH/0IJk+GRx5J79ySJEm1zP7C9YExxrNjjLcDBwENQwiPhhDqASH58lRejQrzOapfG5589yO2bU/zCvPZZ0NxMVx3HZSWpnduSZKkWmR/4brg0x9ijKUxxkuAKcA/gYZJFqaKO3Fwe1Zu3Mors1akd+LcXLjxRnj/fXjggfTOLUmSVIvsL1xPDCEcs+sbMcYfAfcDXZMqSpUzqk9rmjbI5/Epad4aAnDCCXDwwfDDH8KWLemfX5IkqRbYZ7iOMZ4TY/xMm4gY470xxvzkylJlFOTlcNyAdjw3/WM2fpLm7RshwE9/CosXw913p3duSZKkWqJcrfhCCLlJF6L0OGlwBzZv285zM9Lc8xpg9GgYOzYVstem8cAaSZKkWmK/4TqE0Ah4IgO1KA2Gd2lGh6b1efztJcnc4KabYNWqVMCWJEnSf9hfn+t2wD+AezJTjqoqJydw0pD2TJi1nKVrE9gbPWQInH8+3H47zJ2b/vklSZJqsP2tXE8Aboox/iUTxSg9Th/WibIIj0xenMwNbrwR8vPhO99JZn5JkqQaan/hejXQIROFKH26tizioG7NGT9xEWVlaTwO/VPt28PVV6cOlXn55fTPL0mSVEPtL1yPAo4NIVyRgVqURmce2IkFKzfxxrxVydzgW9+CTp3gG9/wWHRJkqQd9teKbyNwAjAkM+UoXY4taUejwjzGT1yUzA0aNEg93Dh5Mvz+98ncQ5IkqYbZb7eQGOP2GONFmShG6VOYn8uJg9vz1NSPWLt5WzI3Oeus1MEy11wDa9Ykcw9JkqQapFx9rncXQsgNIXwp3cUovb44vDOflJbxlyRObITUwTJ33gnLlsEPfpDMPSRJkmqQ/bXiaxxCuDaEcGcIYWxI+W9gLnBGZkpUZZV0aEz/do35U1JbQwCGDYOvfAXuuiu1RUSSJKkO29/K9YNAH2AqcBHwHHAacGKM8cSEa1MVhRA468BOTPtwHVMWJbht4yc/gZYtUyHbhxslSVIdtr9w3T3GeEGM8dfAWcBw4AsxxinJl6Z0OGlIB4oKcvn9a/OTu0nTpnDLLfDGG3DffcndR5IkqZrbX7je+SRcjHE7MC/GuD7ZkpROjQrzOXVYR5589yNWbvgkuRudcw4cfniq//WKFcndR5IkqRrbX7geFEJYt+PfemDgpz+HENZlokBV3bkHd2FraVmye69DgLvvhvXr4ZvfTO4+kiRJ1dj++lznxhgb7/jXKMaYt8vPjTNVpKqmV5tGHNK9BeNeX8j2JE5s/FRxMVx7LTz4IDz9dHL3kSRJqqYq1YpPNc95h3ThwzWb+ed7y5K90fe+B/36waWXplaxJUmS6hDDdR3xuf5taNekMNkHGwHq1Us91Lh4cWoVW5IkqQ4xXNcRebk5fOmgzkyYtYJZHye8onzIIXDllane1xMmJHsvSZKkasRwXYecfVAXCvNzuHfCvORvduON0LUr/Nd/waZNyd9PkiSpGjBc1yHNiwo4bVhHHnv7Q5at35LszYqK4N57YdYsuOaaZO8lSZJUTRiu65j/Oqw728rK+P2rC5K/2Zgx8LWvwS9+Ac89l/z9JEmSssxwXcd0a1nE2P5tePD1BWzaWpr8DX/2s1T3kAsvhFWrkr+fJElSFhmu66CLR3Zn7eZtPDxpcfI3q18f/vAHWLYMLr8cYoJ9tiVJkrLMcF0HDevSjCGdm3LvhHnJHirzqaFD4YYbYPx4+OMfk7+fJElSlhiu66AQApce3p2Fqzbx5LtLMnPT73wHDj0UvvIVWLgwM/eUJEnKMMN1HTW2f1t6tW7IXS/MpiwTq9d5efD738P27XD22bBtW/L3lCRJyjDDdR2VkxP46pE9+eDjDTw3Y2lmbtqjB9xzD/zrX/CDH2TmnpIkSRlkuK7DvjCwPd1aFvGLf84mZupBw7POgosvhptugmeeycw9JUmSMsRwXYfl5gQuH9WD6UvW8cL7yzJ349tvh5ISOPdcWJKhPd+SJEkZYLiu404e0oEOTetzx/MZXL1u0CDVOWTTptT+69IM9NuWJEnKAMN1HZefm8NXRvdgyqI1vPjB8szduF8/uPtueOkluP76zN1XkiQpQYZrcfqwTnRqXp9bnn0/M51DPnX++fDlL8NPfwqPPZa5+0qSJCXEcC0K8nL4xlG9mb5kHU9Py1DnkE/ddRcccACcdx7MnJnZe0uSJKWZ4VoAnDi4A71aN+TWv79P6fayzN24sBAeeSS1D/vkk2Ht2szdW5IkKc0M1wJSnUO+NbYPc5dv5NHJH2b25p06pR5wnD07tYJdlsFwL0mSlEaGa+10dHEbBnVswu3/+IBPSrdn9uZHHAG33QZ/+Qv8+MeZvbckSVKaGK61UwiBq47uy5K1Wxj3+sLMF/Df/51auf7hD1Mr2ZIkSTWM4Vr/YUTPFhzSvQV3vjCbtZu3ZfbmIcCvfw0jRqQ6ibzxRmbvL0mSVEWGa/2HEALf+3w/Vm/ayp3/nJX5AgoLU2352reHE0+EBQsyX4MkSVIlGa71GSUdmnDa0I787tX5zF+xMfMFtGoFTz4JW7bA8cfDunWZr0GSJKkSDNfao6uO7kN+bg4/ezpLvaf79YOHH4YZM+DMMz0iXZIk1QiGa+1R68aFfGVUD56d/jGvzVmZnSKOOip1RPrTT8Nll0HM4OmRkiRJlWC41l5dNLI7HZrW5yd/m8H2TB6LvqtLLoHvfx/uuw+uuy47NUiSJJWT4Vp7VZify9XH9mX6knX8eeKi7BXyox/BRRfBjTfCnXdmrw5JkqT9MFxrn44f2I4DuzbnpmfeY9XGrdkpIgT45S/hhBPgyivtgS1Jkqotw7X2KYTAT04uYcOWUv7n6feyV0heHjz0UKoH9rnnwgsvZK8WSZKkvTBca796t2nEf43sxp8mLmLi/FXZK6R+/dTx6L16pXpge8iMJEmqZgzXKpcrj+xF+yaFfP/xaWzbXpa9Qpo1g2efTfXCPuYYePvt7NUiSZK0G8O1yqWoXh7Xn1DMe0vX88Cr87NbTIcO8M9/QqNG8LnPwfTp2a1HkiRpB8O1ym1s/zYc2bc1t/39Axav3pTdYrp0SQXsggIYMwY++CC79UiSJGG4VgWEEPjRicUE4NpHpxKzfahLz57w/PNQVpYK2PPmZbceSZJU5xmuVSEdmzXgmmP7MmHWCv48cXG2y0kdk/73v8PGjTB6NMydm+2KJElSHWa4VoV96aAuHNStOT/+2wyWrt2S7XJg0CD4xz9g/Xo44giYNSvbFUmSpDrKcK0Ky8kJ/M+pA9m2vYzvPVYNtocADB2a2oO9ZUsqYM+cme2KJElSHWS4VqV0bVnEt8f24fn3lvH4lA+zXU7KoEHw4oupPdijRsG0admuSJIk1TGGa1XahSO6MbRzU65/YjpL1mzOdjkpxcXw0kupEx1HjbIPtiRJyijDtSotNydw2xmDKS2LfGv8O5SVVYPtIQB9+qQCdoMGqYccJ0zIdkWSJKmOSDRchxCOCSG8H0KYHUK4Zi9jRoUQpoQQpocQXqrItcq+ri2L+OHxxbw2dyX3vlKNOnX07AmvvAJt28LYsfDXv2a7IkmSVAckFq5DCLnAXcCxQH/grBBC/93GNAXuBk6IMRYDp5f3WlUfpw/vyNHFbbj52feZsWRdtsv5t86dUwF7wAA4+WT43e+yXZEkSarlkly5PhCYHWOcG2PcCjwEnLjbmLOBR2OMCwFijMsqcK2qiRACPztlIM0aFPC1h95my7bt2S7p31q2THUROfJIuPBCuPnmbFckSZJqsSTDdQdg0S6/L97x3q56A81CCC+GECaFEM6rwLWqRpoXFXDL6YOYtWwDP3pyRrbL+U8NG6a2hXzxi/Cd76T+VYf2gZIkqdbJS3DusIf3dk80ecAwYAxQH3gthPB6Oa9N3SSES4BLADp37lzpYlV1h/duxaVHdOfXL83loG7NOXFwNfrvoXr1YNw4aNEitXq9eDH89rdQWJjtyiRJUi2S5Mr1YqDTLr93BJbsYcwzMcaNMcYVwMvAoHJeC0CM8Z4Y4/AY4/BWrVqlrXhVzrfH9uGArs249tGpzF62Idvl/KfcXLjzTvjZz+CPf4TPfQ5WrMh2VZIkqRZJMly/BfQKIXQLIRQAZwJ/2W3ME8DIEEJeCKEBcBAws5zXqhrKz83hF2cNpTA/lyvGTWbz1mq0/xogBLjmGvjTn+Ctt+CQQzwuXZIkpU1i4TrGWAp8FXiWVGAeH2OcHkK4LIRw2Y4xM4FngHeBN4F7Y4zT9nZtUrUqvdo2KeT2Lw7mg2Xr+cET1fSUxDPOgBdegDVr4OCD7YUtSZLSIsRa9GDX8OHD48SJE7Ndhna47bn3ueOfs/nf0wZyxvBO+78gG+bMgc9/HubNg/vug3POyXZFkiSpmgshTIoxDt/TZ57QqMR87ajeHNqjBd9/fBpTFq3Jdjl71qMHvPoqHHoonHsuXHUVbK9mW1kkSVKNYbhWYnJzAneePZTWjepx6YMTWbZuS7ZL2rPmzeG55+CKK+CWW+C442D16mxXJUmSaiDDtRLVvKiAe88fzvotpVzy4KTqdcDMrvLzU51EfvOb1F7sAw6A6W7zlyRJFWO4VuL6tm3MracPYsqiNXz/8WlU633+F10EL74IGzakHnR84olsVyRJkmoQw7Uy4tgB7bhyTC8enrSY+/81P9vl7Nuhh8LEidCvH5x0Evzwh+7DliRJ5WK4VsZ8fUwvxvZvw0/+NoPnZ36c7XL2rWNHePllOP98uOGG1D7s5cuzXZUkSarmDNfKmJycwO1nDqa4fRO++v/eZuritdkuad8KC+H+++Gee+Cll2DIEPjXv7JdlSRJqsYM18qoBgV53HfBcJoXFfDlB95i8epN2S5p30KAiy+G115Lhe1Ro+DWW6E67xuXJElZY7hWxrVuVMjvLjyAT7Zt54L732Ltpm3ZLmn/hgyBSZPg+OPh29+GU05Jne4oSZK0C8O1sqJXm0bcc95wFqzcyKV/mMgnpTXggcEmTeCRR+C22+DJJ2Ho0NSKtiRJ0g6Ga2XNwd1bcPNpg3h97iq+/tAUSreXZbuk/QsBvvGN1MOOMcLIkfDjH9tNRJIkAYZrZdlJQzpw3Rf68/S0pXz3sanVuwf2rg45BKZMgS9+EX7wAxg9GhYuzHZVkiQpywzXyrr/OqwbV47pxfiJi/npUzNrTsBu0gTGjYMHH0wF7YEDYfz4bFclSZKyyHCtauEbR/Xi/EO68JsJ87j7xTnZLqdizjkH3n4b+vZNrWR/+cupEx4lSVKdY7hWtRBC4PrjizlpcHtufvZ97v/XvGyXVDE9esCECfC978HvfgeDBqX2ZUuSpDrFcK1qIycncPPpgxjbvw03/HUGv39tfrZLqpj8fPjJT1IHzkCqJ/Y3vwmbN2e1LEmSlDmGa1Ur+bk53Hn2UD7Xvw0/eGI6D742P9slVdzIkfDOO3D55fB//5fqkf3GG9muSpIkZYDhWtVOQV4Od509lKP6teG6J6bz4OsLsl1SxTVsCHfdBX//O2zaBIceCtdeC598ku3KJElSggzXqpYK8nK4+0tDOapfa657fBrj3qiBARvgqKNg6lS44AK46SYYPhzeeivbVUmSpIQYrlVtFeTlcNeXhjKmb2u+99g0Hnh1frZLqpwmTeC++1KnOq5aBQcfnNqLvXFjtiuTJElpZrhWtVYvL5e7zxnK2P5tuP4v07nzn7NqTh/s3X3+8zBjBlxySWovdkkJPPtstquSJElpZLhWtVcvL5e7vzSUU4Z04JbnPuBnT79XcwN2kybwy1+m2vQVFsIxx6T6ZC9fnu3KJElSGhiuVSPk5eZwy+mDOO+QLtzz8lyufXQq28tqaMCGVEeRKVNSR6ePHw/9+sEf/gA19T8aJEkSYLhWDZKTE7jhhGK+OronD721iCsfeputpWXZLqvy6tWDG25Ine7Yqxecey6MHQvvv5/tyiRJUiUZrlWjhBD49tF9uPbYvvzt3Y+48Hdvsm7LtmyXVTXFxfDKK3DnnalOIgMGwHe/6wOPkiTVQIZr1UiXHtGDW08fxBtzV3HGr17jo7U1/BTE3Fy44orUqvVZZ8HPfgb9+8Pjj7tVRJKkGsRwrRrr1GEduf/CA1i8ejMn3/Uq7y1dl+2Sqq5NG3jggdQDj40bw8knp7qMzJmT7cokSVI5GK5Vo43s1Yrxlx5CJHL6L1/j1dkrsl1SeowcCZMnw223pbaMFBenHn50q4gkSdWa4Vo1Xv/2jXnsKyNo17SQ8+9/kz+9tTDbJaVHfj584xvw3ntwyinw4x9Dnz4wbhyU1eAHOSVJqsUM16oV2jetz58vO5RDerTk6kemcsNfp1O6vZYE0Pbt4f/9P5gwAdq2TfXFPvRQeP31bFcmSZJ2Y7hWrdGkfj6/PX84Xx7Rjfv/NZ8Lf/cWazfX8E4iuzrsMHjzTbj/fliwAA45JBW0Fy3KdmWSJGkHw7VqlbzcHH5wfH/+59QBvD53JSff/S/mLt+Q7bLSJycHLrgAZs1Ktet7+OHUVpEbboBNm7JdnSRJdZ7hWrXSFw/ozLiLDmbNpm2cdNe/eOmDWna8eMOGcOONqf3YX/gC/PCH0Ls33HcfbN+e7eokSaqzDNeqtQ7s1pwnrhhB+6b1ueD+N7nj+VmU1eQj0/eka9fU8ekvvwwdO8JFF8HAgfDXv9ofW5KkLDBcq1br1LwBj31lBCcP7sBtf/+ALz/wFms2bc12Wek3ciS89lpqm8i2bXDCCXDEET70KElShhmuVevVL8jl1jMG8ZOTSnh19kq+8ItXmLp4bbbLSr8Q4NRTYfp0uPtu+OCD1EOPp52W+lmSJCXOcK06IYTAOQd3Yfxlh1BWFjn1V6/y0JsLibVx60R+Plx+OcyenXrQ8dlnU0epX345fPRRtquTJKlWM1yrThncqSlPXjmSg7o155pHp/K1h6awbkstate3q4YNU6c6zpmTCtb33gvdu8O3vw3La9kDnpIkVROGa9U5zYsK+N2FB3LV0X3429SP+PwdE3h74epsl5Wc1q3hF7+A99+HL34R/u//oFu3VCu/VauyXZ0kSbWK4Vp1Um5O4IrRPRl/6SGUlcHpv3qNu1+cXfu6ieyqe3f43e9gxgw4/ni46aZUyL7hBli3LtvVSZJUKxiuVacN69KMp742kqOL2/K/z7zPub99g2XrtmS7rGT16QN//CO88w6MGZPqkd2tWypsb9yY7eokSarRDNeq85rUz+fOs4dw0ykDmLRgNcf8fALPTFua7bKSN2AAPPooTJwIBx8M116bCtm33AIbatGplpIkZZDhWiLVTeTMAzvz5H8fRrsmhVz2h0l8809TWLu5lj7suKthw+Bvf4NXX4VBg+Cqq1KH0/z0p7C2FrYslCQpQYZraRc9Wzfisa+M4Moje/LEO0s45vaXmTCrjnTWOOQQ+PvfUyH7oIPge99Lhezrr/fBR0mSyslwLe2mIC+Hb47tw6OXH0qDglzOve9Nrnt8Gpu2lma7tMw45JDUSvbEiTB6NPzoR9ClC1xzDSxblu3qJEmq1gzX0l4M6tSUv105kv86rBt/eGMBx/18Aq/PXZntsjJn2LDUnux334XPfx7+939TK9nf/KaH0UiStBeGa2kfCvNzue4L/fnjxQezPUbOvOd1rn10au09eGZPBgyAhx6CmTPh9NPhjjtSDz5eeinMmpXt6iRJqlYM11I5HNy9Bc9+/XAuObw7f3prIUfd+hLPTq8DHUV21acPPPAAfPABXHBB6uc+feC00+DNN7NdnSRJ1YLhWiqnBgV5fPe4fjx+xQiaFxVw6YOT+Mq4SSxbX8v7Yu+ue3f41a9gwYJU+77nn089ADlqFDz9NMRafBCPJEn7YbiWKmhgx6b89b8P46qj+/CPmcs46taXeOjNhbX7dMc9adMGbrwRFi6E226DOXPguONg4EB48EHYVoe2zkiStIPhWqqE/Nwcrhjdk2e+NpK+7RpzzaNTOf3XrzF9SR3sC92oEXzjG6lw/cADqZXr886DHj3g9ts9kEaSVKcYrqUq6N6qIQ9dfDA3nzaQ+Ss2cvwvXuGHf5letx54/FRBQSpUT50K/7+9+46O+zrPPP696B0gOgGisYIEO8FO0RQpyVSxpcSWbclFjttm4xYnOXuSze6ebdmSs7u2k1Wc47jba8lWsa1uSpRIUSQhEuwNYAfReyfRZu7+cQcYkKJokZzhAIPnc86cwfx+M8CFr2U9fvHee196yS16/Na3YMYMdzBNTU2oRygiIhJ0CtcitykiwvBoeQFv/uUmPr26iJ/uvcjm/7WT3xyqw07F/mNj3NZ9O3dCRQVs3Qrf/rbr1X70UXdIzVT8z0VERKYEhWuRAElNiOa/PLKQF766gfxp8XzrV0f45PcrqGrqCfXQQmf1areN34UL8Fd/BW+8AevXw5o18NRT6ssWEZGwY8KpslZeXm4rKytDPQwRvF7L0/tr+fvfV9FzZZjHVxfyrXvmkpEUG+qhhVZfH/zsZ/Dd77ot/fLz4Wtfg698BdLTQz06ERGRD8QYc8BaW37dewrXIsHT2T/Ed7ef4ecVNSTERPKNzXN4Yl0xMVFT/I9GXq/btu8733HV7Ph4eOIJ+MY3YP78UI9ORETkhhSuRULsbEsv//XlU+yobqU4I4F/+8B87l2QgzEm1EMLvWPHXCX7F7+AwUG4+2746lfh4YchKirUoxMREXkPhWuRCeKt6hb+7uVTnG3pY92sDP79QwuYPz0l1MOaGFpb4Yc/hO99z+2dnZ/vjlj/8pchNzfUoxMRERmjcC0ygQx7vPzy3Ut8+43TdF8Z5o+W5fMX985lxrSEUA9tYvB44OWX4cknYds2iI6Gj33MVbPXr3e7kYiIiISQwrXIBNR1eYjv7TjHj/dcBAufXVvEV++eTXpiTKiHNnGcPu0q2T/+MXR3w5Il8Gd/Bp/+NCQmhnp0IiIyRSlci0xgDV1XjSCOGQAAIABJREFU+M4bp3n2QB2JMVH8qw/N5AsbSkiIUb/xmP5++OUvXTX7yBFITYXPf961jWgBpIiI3GEK1yKTwJnmXv7+99W8frKZrORYvrllDp9cWUB05BTfWWQ8a90hNE8+Cc8+6/bJvusut5Xfxz7mdh0REREJMoVrkUnkQE0H/+PVKvZf7KQ4I4FvbJnDR5fkEaWQfbWWFvjpT+H734ezZ2HaNHf8+pe/DGVloR6diIiEMYVrkUnGWsv2Uy3879dPc6qxh5mZiXzznjk8tDiPyAgt6LuKtbBjhwvZzz3nqtnr17tq9qOPqpotIiIBp3AtMkl5vZZtJ5v4zhtnqGrqZXZ2Et/cMocHF00nQiH7vVpb3QmQ3/++WwyZlgaf/awL2gsXhnp0IiISJhSuRSY5r9fy6vEmvvPGac609DE3J4k/v2cuW8tyFbKvx1rYudNfzR4agrVr4YtfhE98ApKTQz1CERGZxBSuRcKEx2t5+Vgj333jNOda+ynNTebrm+ewdWGu2kXeT1ubq2b/y79AVRUkJLh2kT/5E9i4Uftmi4jITVO4FgkzHq/lxSMN/MP2M5xv62dmZiJ/umkWjyzNJyZKCx+vy1qoqHB7Zj/9NPT2wqxZbku/J56AgoJQj1BERCYJhWuRMOXxWl473sSTb53lZGMPealxfGXjTD61qpC46MhQD2/i6u+H5593Qfutt1z1+t57XTX7kUcgLi7UIxQRkQlM4VokzFlr2XG6lSffPEtlTSeZSTF8YUMJn1lTREpcdKiHN7GdP++29PvJT+DSJbcI8vHH4QtfgOXL1TYiIiLvoXAtMoXsu9DBk2+dZefpVpLjonhibTGfX19MZlJsqIc2sXm98Oabrpr9/PMwMACLFrm2kccfh9zcUI9QREQmCIVrkSnoeH03/7TjLK8ebyI6MoKPLc/nixtmMjs7KdRDm/i6ulxf9o9+BPv3Q0SEaxv57Gdd20hiYqhHKCIiIaRwLTKFnWvt44fvXOC5A3UMjnjZXJrNl+4qYe3MDIxaHv6wqir4+c/hF79wbSNJSfDHf+xOg9y0CSLV2y4iMtUoXIsI7X2D/Lyihp/vraG9f4iyvBS+fNdMHlw8nWgdrf6Heb2wa5cL2s88Az09kJ8Pn/60q2jrkBoRkSlD4VpExgwMe/jNoXp+sOs851r7mZ4ax+fXFfPY6kItfvygrlyBF190Qfu112BkBJYudSH7scdg+vRQj1BERIJI4VpE3sPrtew43cK/vH2BvefbSYyJ5OMrZvC5dcXMylJf9gfW2ur6s3/2M6is9Pdnf+Yz8PDDOg1SRCQMKVyLyA0dr+/mh+9c4KWjDQx7LHfNyeTz64rZNC9bJz/ejGv7s+Pj4aGHXDX7/vu1f7aISJhQuBaRD6S1d5Cn913iF+/W0NwzSGF6Ap9dU8QnygtITVDLyAfm9cKePfDUU64/u7UVUlLcQsjHHoPNmyEqKtSjFBGRW6RwLSI3Zdjj5fcnmvjZnhr2XewgPjqSR5bl88S6IkpzU0I9vMllZMTtn/3UU27/7J4eyM6GRx91QXvtWtdKIiIik4bCtYjcshMN3fxsTw2/PVzP4IiX1SXpfG5tMfcuyCEmSqHwpgwMwKuvuqD94ovudWEhfOpT7rF0qU6EFBGZBBSuReS2dV0e4lf7a/l5RQ11nVfITIrh0fICHltZSGFGQqiHN/n09sLvfueC9rZtrsJdWupC9mOPwdy5oR6hiIi8D4VrEQkYj9fy9plWfvnuJbafasZr4a45mXx6dSFb5udoz+xb0dYGzz3ngvbbb4O1sHgxfOITrn1EQVtEZEJRuBaRoGjqHuBX+2t5ev8lGrsHyEqO5ZPlBXxyZQEF6apm35L6ercI8pln3KJIcEH70UfdY9680I5PREQUrkUkuDxey47qFn757iXeqm7BAhvnZPH46kK2lGYTpWr2ramrcxXtX/9aQVtEZAJRuBaRO6a+6wq/2l/Lr/ZforlnkKzkWP54eT6PrihgdrYOp7llo0H7mWdg9253bdEif9AuLQ3t+EREphCFaxG540Y8Xt6qbuXXlbW8WdWCx2tZXpjGJ8oLeHDxdJJ11Pqtq6/3V7QVtEVE7jiFaxEJqZbeAX57qJ5fV9ZxtqWP+OhI7l+UyyfKC1hdko7R9nO3bjRoj1a0rYWFC92BNX/0R7Bkibb3ExEJMIVrEZkQrLUcru3i15V1vHSkgd7BEQrTE3h0xQw+tmIGeWnxoR7i5NbQ4IL2c8/Brl3upMiSEn/Q1oE1IiIBoXAtIhPOlSEPr51o5JnKOvaca8cY2DA7kz9ens+Hy3JJiNHx4LeltRVeeMGdCvnGGzA0BLm58MgjLmjffTdEqzVHRORWKFyLyIRW23GZZw/U8eyBOuq7rpAQE8nWslweWZbP+tmZREaoreG29PTAK6+4oP3KK9DfD2lp8JGPuKr2ffdBgrZOFBH5oBSuRWRS8HotlTWd/OZQHS8dbaR3YITs5FgeXprHI8vyWTA9Rf3Zt+vKFVfJfv55V9nu6ID4eLj/fhe0H3zQBW8REXlfCtciMukMDHt4q6qF5w/Vs6O6hWGPZV5OMn+0PJ+Hl+YxPVX92bdtZMSdCPn88/Cb37ie7eho2LzZtY585COQlxfqUYqITDgK1yIyqXX2D/HSsUZ+c7COg5e6MAbWzszgkWX5bF2YS4q29bt9Xi/s3++C9vPPw9mz7vrKlfDRj8LDD7tdSPSXAxGR0IVrY8xW4LtAJPADa+3/uOb+JuB3wAXfpeettf/Zd+9bwJcACxwD/sRaO3Cjn6dwLRL+Lrb189vD9fzmUD017ZeJiYrg7nlZfGRJHltKc4iPiQz1ECc/a+HkSdc28sILUFHhrhcX+4P2XXdpQaSITFkhCdfGmEjgNHAvUAfsBx6z1p4c955NwF9Zax+65rP5wDvAAmvtFWPMr4FXrLU/udHPVLgWmTqstRyq7eLFIw28fLSRlt5BEmIiuWd+Dh9ZksfGuZnERiloB0RTE7z0Evzud65fe2AAUlPhgQdc2L7/fvdaRGSKuFG4DuZeV6uAs9ba875BPA08DJy84af8ooB4Y8wwkAA0BGWUIjIpGWNYXjiN5YXT+HcPLmDfhQ5ePNrAq8caeeFIA8lxUWwty+UjS/JYNyuDqEjt73zLcnPhS19yj/5+F7B/9zsXuJ96CqKiYNMmF7Q/+lEoKgr1iEVEQiaYleuPA1uttV/yvf4ssNpa+7Vx79kEPIerbDfgqtgnfPe+CfwdcAXYZq399B/6mapci8iwx8vus228eKSRbSea6B0cISMxhvsX5fLRJfmUF00jQlv7BYbHA+++64L2Cy9AVZW7vmSJv31k+XL1aYtI2AlVW8ijwIevCderrLVfH/eeFMBrre0zxjwAfNdaO8cYMw0Xuj8JdAHPAM9aa39xnZ/zFeArAIWFhStqamqC8vuIyOQzMOxh5+lWXjzSwBunmhkY9pKbEseDi6fzwKJclhUoaAfU6dP+Pu3du90iyfx81z7y0EOwZQskJoZ6lCIity1U4Xot8B+ttR/2vf4bAGvtf7/BZy4C5cDduKr3F33XPwessdb+2Y1+pirXIvJ++gdHeONUMy8eaeTt060MebzkpMSytSyX+xdNZ2Vxug6rCaS2Nnj5ZRe0X38denshNta1jzz4oHvMnBnqUYqI3JJQheso3ILGLUA9bkHj46NtH7735ALN1lprjFkFPAsU4fq1fwSsxLWF/ASotNb+441+psK1iHwQvQPDvFnVwivHGtlR3crgiJfMpBg+XJbLA4ums7okXT3agTQ0BLt2ubD98suuwg0wf74/aK9fr91HRGTSCOVWfA8A38Ftxfcja+3fGWP+FMBa+8/GmK8B/xoYwYXov7DW7vF99j/h2kJGgEPAl6y1gzf6eQrXInKz+gdH2FHdyivHG3nzVAtXhj1MS4jmvgW53L8ol3WzMomJUtAOqDNn/EF7504YHna7jXz4wy5o338/ZGWFepQiIu9Lh8iIiHwAV4Zcj/arxxvZfqqFvsERUuKiuHdBLg8symXDHG3vF3C9vW73kZdegldecdv+GQOrVrk+7QcfhKVLtShSRCYUhWsRkZs0MOzhnTNtvHq8iddPNtEzMEJiTCSbSrO5b0EOd5dm62TIQPN64dAhV9F+6SV3YiS4I9gfeMAF7XvugaSk0I5TRKY8hWsRkdswNOJl97k2tp1o5vWTzbT1DRIdaVgzM4P7ynK5d34OualxoR5m+GluhldfdWF72zbo6XF92XfdBVu3uvaRsjJVtUXkjlO4FhEJEK/XnQy57WQT2040c6GtH4AlM1K5ryyX+xbkMDs7CaPAF1hDQ257v1dfhddeg2PH3PX8fH/Q3rIF0tJCO04RmRIUrkVEgsBay7nWPn5/opltJ5s5UtsFQElmIvctyOG+shztpR0sdXXw+9+7oP3669DdDZGRsHatP2wvXQoRWowqIoGncC0icgc09wzw+kkXtPeea2PYY8lMiuXeBdncuyCHdbMyiYvWgsiAGxmBigoXtF97DQ4ccNezs90OJFu3wn33QWZmaMcpImFD4VpE5A7rGRhmR3Ur2040saO6lb7BEeKiI9gwO5PNpTlsLs1Wn3awNDe7Hu3XXnPV7fZ215e9cqW/qr1ypat0i4jcAoVrEZEQGhzxUHG+gzdPNbO9qoW6zisALMxPYXNpDltKs1mUn6r2kWDweFwle7Sq/e67bleSadNcNXu0qp2XF+qRisgkonAtIjJBWGs509LH9lMtvFnVzIGaTrwWMpNi2VyaxZb5OWyYnUlibFSohxqe2tvdvtqjYbupyV0vK3Mh+957YeNGSEwM7ThFZEJTuBYRmaA6+ofYebqF7ada2Hm6ld6BEWIiI1gzK4MtpdlsLs2mID0h1MMMT9bCkSNuQeTrr8Pbb8PgIMTEuOPYR8P2smVaGCkiV1G4FhGZBIY9XvZf7ODNUy28WdXCed82f/Nyktk8P5u752WzvDCNqEgFvaC4cgV27XJBe9s2OHrUXc/IcIfXjIbtgoLQjlNEQk7hWkRkEjrf2sebVa6qvf9iByNeS3JcFHfNyWTT3Gw2zs3Soshgam52LSTbtrnA3djors+b5w/amzZBcnJIhykid57CtYjIJNczMMzuM23sqG5l5+lWmnoGACjNTWbTvGw2zctiRdE0olXVDg5r4cQJf1V7505X6Y6Kcntrj4bt8nLtQiIyBShci4iEEWst1c297KhuZUd1C5UXOxnxWpJio1g/O2MsbE9PjQ/1UMPX4KA7MXI0bB886K5PmwabN7s2ki1bYPZsHc8uEoYUrkVEwljvwDB7zrW7qnZ1Cw3drqo9LyeZTfOy+NC8LMqL0omJUlU7aFpbYft2f9iuq3PXCwtd2N6yxT2mTw/tOEUkIBSuRUSmCGstZ1v6XFX7dAv7LnQw7LEkxkSybnYmm+ZlsXFOlnYgCSZr4cwZF7a3b4e33oKODndv/nx/0N60CdLSQjpUEbk1CtciIlNU/+AIe8+1s+N0CzuqW8cOsCnOSGDDnEzumpPF2lkZpMRFh3ikYczrhcOH/WF71y64fNlt77dihQvamzfDhg0Qr1YekclA4VpERLDWcr6tn3fOtLHrTCt7z7XTP+QhMsKwtCCNDbMz2Tg3kyUztN1fUA0NQUUFvPmmC9sVFTAy4vbXXrfOX9leudItmBSRCUfhWkRE3mPY4+XQpS52nWll15k2jtZ14bWQHBvF2lkZ3OWrbBdlJGC0KC94+vpcNXu0sn34sLuenAwf+pA/bC9cqMWRIhOEwrWIiPxB3ZeH2XOujbd9le3RFpIZ0+K5a04Wd83JZP2sTFIT1EISVG1trk97NGyfPeuuZ2W59pHNm12/9pw5CtsiIaJwLSIiN8VaS0375bGq9t5z7fQOjhBhYNGMNDbOyWTD7EyWFU7TLiTBdumSv4Vk+3b/YTZ5eS5k3323e541S2Fb5A5RuBYRkdsy7PFypLaLXb6q9uFa10ISHx3JypJ01s3KYP2sTBbkpRAZoYAXNKM7kbz1FuzY4Z6bm929GTNcyB4N3CUlCtsiQaJwLSIiAdV9ZZiK8+3sPdfO7rNtnGnpAyA1Ppo1M9NZNyuT9bMzmJWVpH7tYLIWqqv9QXvHDmhpcfcKCvxV7bvvhuLi0I1TJMwoXIuISFC19A6w91w7e862s/tc21i/dnZyLOtmZbBuVibrZmcwY5r21w4qa+HUqavDdlubu1dUdHUbSVFR6MYpMskpXIuIyB1V23GZ3Wfb2HOunT3n2mnrGwSgMD2B9bMzWDsrk3WzMshMig3xSMOctXDihAvZo4/2dnevpOTqsF1QELJhikw2CtciIhIy1lrOtPSNhe2K8+30DowA7oj2dbNdZXv1zHQdZhNsXq8L26NV7Z07/adHzprltv770Idg40ZX2VZLj8h1KVyLiMiEMeLxcryhhz3n2thztp39FzsYHPESYWBhfiprZmawuiSdlSUK20Hn9cKxY1eH7a4ud6+gwIXsjRtd4J47V2FbxEfhWkREJqzBEQ+HLnWx52wbFRc6OHypiyGPC9tleamsmZnO6pIMVpakkxqvsB1UXi8cPw5vv+1/jO5Gkp3tD9sbN8KiRe4Id5EpSOFaREQmjYFhF7YrzrsWkkO1XQyNeDEGyvJSWFOSweqZGawqTteBNsE2uvXf+LBdU+PupaXBhg3+sL18OURrPmRqULgWEZFJa2DYw+Faf9g+eMkfthdMTxlrI1ldkqGwfSfU1Ljj2kfDdnW1u56YCOvW+cP2qlUQFxfasYoEicK1iIiEjYFhD0dqu6g43+EL250M+sL2/Fxf2J6ZzuqSdNISYkI93PDX3OwP2zt3uh5uayEmBlav9ofttWshOTnUoxUJCIVrEREJW4MjHo7Udo9Vtg/U+MN2aW6KWxxZnM7KkmlkJ6uSGnQdHbB7t7+yfeAAeDwQGelaRzZudO0k69dDVlaoRytySxSuRURkyhgc8XC0rpuKc+1UXGjnYE0XV4Y9ABRnJPiCdjqritMpykjQCZLB1tcHe/f6w/a778Kg2/ecefP8QXvDBpg9WzuSyKSgcC0iIlPWsMfLiYYe9l1oZ9+FTiprOui6PAy4EyRHg/bK4nTm5SYTGaFwF1SDg66a/c477rF7t3+v7exsF7JHH0uXapGkTEgK1yIiIj5er+Vsax/7LnSw/2IH+y900NA9AEByXBTlRdPGAveiGanERkWGeMRhzut1iyJHw/Y778D58+5eQoLr2x4N22vWQEpKaMcrgsK1iIjIDdV1Xmb/xQ72Xehk34V2zrX2AxAbFcGSgrSxvu3lRdNIio0K8WingIYGV9HevduF7UOHXAiPiIDFi6+ubufnh3q0MgUpXIuIiNyE9r5B9l/sdJXtix2caOjB47VjB9usLE5nVck0VhSlk5UcG+rhhr/eXterPVrZrqiAfvd/gCguvrpve8ECHW4jQadwLSIichv6Bkc4dKmT/Rc62Hexg0OXuhgc8QJQmJ5AedE0VhRPY0XRNOZmJxOhvu3gGhmBI0eubiVpanL30tJc0F6/3u27vXKlay8RCSCFaxERkQAaHPFwvL6HgzVugeSBmk7a+oYA17e9vNAF7fKiaSwtTCMhRq0kQWWt69MebSN55x04dcrdi4pyCyPXrnVhe906KCjQriRyWxSuRUREgshay6WOy1Re7OTApU4OXOzkdEsv1kJkhGH+9GTKi9JZUeRCd15afKiHHP7a2137yJ497rFvH1y+7O7l5fmD9tq1sGwZxKq9Rz44hWsREZE7rPvKMIcudXKgppPKi50crvXvt52XGseK4nRWFKZRXpxOaW4yUZHqEw6qkRE4etQF7b173fPFi+5ebCysWHF14M7NDelwZWJTuBYREQmxEY+XU429Y20kB2o6afRtAZgQE8nSgjRf73Y6ywrTSInT/s5B19joD9p790JlJQy59h5KSvxBe906WLTItZiIoHAtIiIyIdV3XXFB+2IHlTWdnGrswWtdO/Dc7GSWF6WxrGAay4vSmJmZpIWSwTY4CAcP+gP3nj0ugAMkJsKqVf7AvXYtpKeHdrwSMgrXIiIik0D/4AiHa7uovNjJodpODl3qovuKO00yOS6KpQVpLC+cxrJCF7pTE1TdDipr4dKlq1tJDh8Gj2vvobTUX9leuxbmz9c2gFOEwrWIiMgk5PVaLrT3c+hSFwcvubBd3eSq2wAzsxKvCttzc5LUux1s/f2ufWS0sr13r1s8CZCc7Krbq1e70yRXr3ZHukvYUbgWEREJE/2DIxyp6+LQpdFHJ+39rk84ISaSJTPSXNj2he7MJO2CEVTWwpkzbmeSigp32M2RI/7qdkmJP2ivWeO2BdTOJJOewrWIiEiYstZS23GFQ7WdHKzp5FBtFycbehjxlbcL0xNYVuhvJ5k/PYVoVbeD6/JlOHDABe3RwF1X5+7FxLit/9as8Yfu4mLtuz3JKFyLiIhMIQPDHo7Xd4+1khy81ElzzyAAsVERLMpPZXnRNJYWpLGkII281DiMwl1w1dW5kD0auCsr4coVdy8721/ZXrPGnSqZnBza8coNKVyLiIhMcQ1dV8baSA5e6uR4fQ9DHneEe1ZyLEtmpLG0IJUlBWkszk/TYslgGx6G48f9le2KCqiudveMgbKyq3u3FyyAyMjQjlnGKFyLiIjIVQZHPFQ19nKkrovDtV0cqe3iXGv/2P2ZmYksKUhjyQwXuBfkpRAbpXAXVJ2d7iTJ8YG7s9PdS0p672LJnJzQjncKU7gWERGRP6hnYJhjdd1jYftwbRctva6dJDrSsGB6ii9wu3aSmZmJ2ns7mKyFs2ffu1hyZMTdLyhwgXvlSve8YgWkpIR2zFOEwrWIiIjcNGstTT0DvqDdzZHaLo7WddE/5HbCSI6NYnFB6ljYXlqQRk5KXIhHHeYuX3YH3ezbB/v3u+fz5909Y9ze26tW+UP34sXanSQIFK5FREQkIDxey/nWPlfdruviSG03pxr9u5PkpsSNLZRcUpDKovxUknWUe3C1tbkFkuMDd0uLuxcTA0uWXB24583TYTe3SeFaREREgmZg2MOJhh6OjAXuLi62XwZcMXVWVhKLZ6SyOD+VRTPSWDA9hfgY9W8HjbVQW+tC9mjgrqyEvj53PyUFysv97SQrV8KMGdoO8CYoXIuIiMgd1dk/xNF610pypLaLo/XdtPr6tyMjDHOyXeBeNCONxfmplE5P1oLJYPJ4oKrKX9nev9/1bw8Pu/u5uVf3b5eXQ3p6aMc8gSlci4iISMg19wxwtK6bY3VdHKnr5lh9Nx2+0yWjIw3zcpNZlJ/mQnd+KnNzkomJUvtC0AwMuIA9PnBXVfnvz559deBetgzi40M33glE4VpEREQmHGst9V1XOFbXzdH6bvdc10XPgNsNIyYqgvnTU3ztJKksnpHK7KwkonTCZPB0d7sWkvGBe/R0ychIt/92ebnbmaS83C2YjJt6i1gVrkVERGRSsNZyqeOyq3DXu7B9vL6HvkEXuOOiIyjLc5Xtxb7AXZKZRKS2BAyehgYXsvfvd8e6V1a6RZQAUVGwcKEL2qOhe9GisN+hROFaREREJi2v13Khvd9X2e7mWL0L3FeG3ZaAiTGRlOWnjlW4F+anUpKhPbiDZnTBZGWle4wG7o4Odz862lW0R6vb5eWu4h0TE9pxB5DCtYiIiIQVj9dyrrVvrIf7aH03Jxt6GBxxR7onxkRSlpdKWX4KC/Nc4J6VlaiWkmCxFi5e9Aft0dDd1eXuj24JOL6lZMECF8QnIYVrERERCXvDHi+nm3s50dDDifpujjf0cLLBX+GO9fVwLxwXuOfkJGmXkmCx1h1wMz5sHzgAPT3uflycP3CPhu75812ryQSncC0iIiJTksdrudDWx/H6Ho7Xd3O8oZsT9T30+nq4oyMNc7KTXeDOT6UsL1X7cAeT1+uOdB9f4T540L8Hd3y825VkfEvJvHluMeUEonAtIiIi4uP1Wmo7L7vA3dDtQnd9N52X3Z7PEb6Db1zYdqF7QV4KKTppMji8Xjh9+ur+7YMH3VHvAImJsHSpC9zLl7vn0tKQVrgVrkVERERuwFpLY/eAr7o92lbSTXPP4Nh7ijMSKMtP9bWUuNaSaYnhs0hvQvF4oLr66ur2oUP+wB0f71pKvv51ePzxOz68G4Xrid/UIiIiIhJkxhjy0uLJS4vnvrLcsestvQP+Hu56d8T7y0cbx+7np8VTlpfi2knyUijLS2F6ahxGR4nfnshIt+BxwQL43OfcNY/HVbgPHHBh+8ABGBoK7TivQ5VrERERkZvQdXmIEw09V1W5L7T3Mxqp0hKiWTA9xT3y3GNWVhLR2qkkbKhyLSIiIhIgaQkxrJ+dyfrZmWPX+gdHqGrq5WSj26HkZGMPP6+oGdsaMCYygrm5SeNCdyql05PVxx2GFK5FREREblNibBQriqaxomja2LURj5cLbf1XBe43TrXw68q6sfcUpif4K9y+Z7WVTG4K1yIiIiJBEBUZwZycZObkJPPw0nzALZxs6R0cC9ujz6+daBr7nNpKJjeFaxEREZE7xBhDTkocOSlx3F2aPXa9b3CE6qaeq0L3H2ormT89mWS1lUw4CtciIiIiIZYUG8WKonRWFKWPXfugbSWlucnMn57C/OnJlOamUJieQESE2kpCReFaREREZAL6IG0lJxq6qWrq5fVTzWO7lSTERDI35+rAPS83mdR4VbnvBG3FJyIiIjLJXRnycLq5l6qmHk41+p+7rwyPvSc/LX4sbJf6nksyE4lUlfumaSs+ERERkTAWHxPJkoI0lhSkjV2z1tLcM8ipxh5ONfVQ5Qvdb1W34vG64mpsVISvyu0P3fNzU3Ty5G1QuBYREREJQ8YYclPjyE29evHk4IiHsy19rsLd2ENVUy/br+nlzkmJZf70FEpz/a0lM7MStWNVLjTTAAAKe0lEQVTJB6BwLSIiIjKFxEZFUpaXSlle6lXXW3sHqfJVuF21u5fdZ88z7HFV7pjICGZlJzHfV90unZ7MvNxkspJitS/3OArXIiIiIkJWcixZyVncNSdr7Nqwx8v51n6qmtwCyqrGXnafbeP5g/Vj70lPjGFuThKluSnMzXGBe25O0pTdJlDhWkRERESuKzoygnm5LjCP7lgC0NE/RFVjD9XNvVQ39VLd3MszlbX0D3nG3pOfFu8L2smU+p5nZScSGxUZil/ljlG4FhEREZGbkp4Yw7rZmaybnTl2zeu11HddGQvbp33Be9eZ1rHWksgIQ0lmIvPGKtwueBekJ4TNriUK1yIiIiJy2yIiDAXpCRSkJ3DPgpyx68O+w3Cqm3p92wX2cryhm1eON47tzR0XHcGcbBe4R4P3vNxkspMnXz+3wrWIiIiIBE10pNvub25O8lXXLw+NcKa5b6y15HRzLztPt/LsAf+uJWkJ0a6Pe1zgnpszsQ/EUbgWERERkTsuISbqPXtzg+vnHg3bo8H7t4fq6R0cGXvP9NQ45uYk86mVBdy/aPqdHvoNKVyLiIiIyISRnhjD2lkZrJ2VMXbNWktD9wCnm/yBu7qpl47LQyEc6fUpXIuIiIjIhGaMIT8tnvy0+KsOxJmIdMyOiIiIiEiAKFyLiIiIiASIwrWIiIiISIAoXIuIiIiIBIjCtYiIiIhIgChci4iIiIgEiMK1iIiIiEiAKFyLiIiIiASIwrWIiIiISIAoXIuIiIiIBIjCtYiIiIhIgAQ1XBtjthpjqo0xZ40xf32d+5uMMd3GmMO+x38Ydy/NGPOsMabKGHPKGLM2mGMVEREREbldUcH6xsaYSOBJ4F6gDthvjHnBWnvymrfustY+dJ1v8V3gNWvtx40xMUBCsMYqIiIiIhIIwaxcrwLOWmvPW2uHgKeBhz/IB40xKcBG4IcA1toha21X0EYqIiIiIhIAwQzX+UDtuNd1vmvXWmuMOWKMedUYU+a7NhNoBX5sjDlkjPmBMSYxiGMVEREREbltwQzX5jrX7DWvDwJF1tolwD8Cv/VdjwKWA9+z1i4D+oH39GwDGGO+YoypNMZUtra2BmbkIiIiIiK3IJjhug4oGPd6BtAw/g3W2h5rbZ/v61eAaGNMpu+zddbad31vfRYXtt/DWvt9a225tbY8Kysr0L+DiIiIiMgHFsxwvR+YY4wp8S1I/BTwwvg3GGNyjTHG9/Uq33jarbVNQK0xZp7vrVuAaxdCioiIiIhMKEHbLcRaO2KM+RrweyAS+JG19oQx5k999/8Z+Djwr40xI8AV4FPW2tHWka8D/88XzM8DfxKssYqIiIiIBILxZ9nJr7y83FZWVoZ6GCIiIiISxowxB6y15de7pxMaRUREREQCROFaRERERCRAFK5FRERERAIkrHqujTGtQE0IfnQm0BaCnyt3luZ5atA8Tw2a5/CnOZ4aQjXPRdba6+4BHVbhOlSMMZXv19Qu4UPzPDVonqcGzXP40xxPDRNxntUWIiIiIiISIArXIiIiIiIBonAdGN8P9QDkjtA8Tw2a56lB8xz+NMdTw4SbZ/Vci4iIiIgEiCrXIiIiIiIBonB9G4wxW40x1caYs8aYvw71eOTmGGMKjDFvGWNOGWNOGGO+6buebox53Rhzxvc8bdxn/sY339XGmA+Pu77CGHPMd+8fjDEmFL+TXJ8xJtIYc8gY85LvteY4DBlj0owxzxpjqnz/XK/VXIcXY8y3fP97fdwY85QxJk5zHB6MMT8yxrQYY46PuxawuTXGxBpjfuW7/q4xpjhYv4vC9S0yxkQCTwL3AwuAx4wxC0I7KrlJI8BfWmvnA2uAr/rm8K+B7dbaOcB232t89z4FlAFbgX/y/fcA4HvAV4A5vsfWO/mLyB/0TeDUuNea4/D0XeA1a20psAQ355rrMGGMyQe+AZRbaxcCkbg51ByHh5/w3nkI5Nx+Eei01s4Gvg38z2D9IgrXt24VcNZae95aOwQ8DTwc4jHJTbDWNlprD/q+7sX9izgfN48/9b3tp8Ajvq8fBp621g5aay8AZ4FVxpjpQIq1dq91ixh+Nu4zEmLGmBnAg8APxl3WHIcZY0wKsBH4IYC1dsha24XmOtxEAfHGmCggAWhAcxwWrLVvAx3XXA7k3I7/Xs8CW4L1FwuF61uXD9SOe13nuyaTkO/PQ8uAd4Eca20juAAOZPve9n5znu/7+trrMjF8B/g3gHfcNc1x+JkJtAI/9rUA/cAYk4jmOmxYa+uB/wVcAhqBbmvtNjTH4SyQczv2GWvtCNANZARj0ArXt+56/29HW69MQsaYJOA54M+ttT03eut1rtkbXJcQM8Y8BLRYaw980I9c55rmeHKIApYD37PWLgP68f0J+X1oricZX7/tw0AJkAckGmM+c6OPXOea5jg83Mrc3rF5V7i+dXVAwbjXM3B/npJJxBgTjQvW/89a+7zvcrPvT0v4nlt8199vzut8X197XUJvPfBRY8xFXOvWZmPML9Ach6M6oM5a+67v9bO4sK25Dh/3ABesta3W2mHgeWAdmuNwFsi5HfuMr60olfe2oQSEwvWt2w/MMcaUGGNicI31L4R4THITfL1WPwROWWv/z7hbLwBP+L5+AvjduOuf8q04LsEtlNjn+1NVrzFmje97fm7cZySErLV/Y62dYa0txv0z+qa19jNojsOOtbYJqDXGzPNd2gKcRHMdTi4Ba4wxCb652YJbK6M5Dl+BnNvx3+vjuH8fBOcvFtZaPW7xATwAnAbOAX8b6vHocdPztwH3J6GjwGHf4wFcD9Z24IzvOX3cZ/7WN9/VwP3jrpcDx333/i++A5r0mDgPYBPwku9rzXEYPoClQKXvn+nfAtM01+H1AP4TUOWbn58DsZrj8HgAT+F66YdxVeYvBnJugTjgGdzix33AzGD9LjqhUUREREQkQNQWIiIiIiISIArXIiIiIiIBonAtIiIiIhIgCtciIiIiIgGicC0iIiIiEiAK1yIiYc4Yc9EYk3m77xERkT9M4VpEREREJEAUrkVEwogx5rfGmAPGmBPGmK9cc6/YGFNljPmpMeaoMeZZY0zCuLd83Rhz0BhzzBhT6vvMKmPMHmPMId/zPERE5H0pXIuIhJcvWGtX4E4p+4YxJuOa+/OA71trFwM9wJ+Nu9dmrV0OfA/4K9+1KmCjtXYZ8B+A/xbU0YuITHIK1yIi4eUbxpgjQAVQAMy55n6ttXa37+tfABvG3Xve93wAKPZ9nQo8Y4w5DnwbKAvGoEVEwoXCtYhImDDGbALuAdZaa5cAh4C4a95mb/B60PfsAaJ8X/8X4C1r7ULgI9f5fiIiMo7CtYhI+EgFOq21l30902uu855CY8xa39ePAe98gO9Z7/v68wEZpYhIGFO4FhEJH68BUcaYo7iKc8V13nMKeML3nnRcf/WN/D3w340xu4HIQA5WRCQcGWuv/QuhiIiEI2NMMfCSr8VDRESCQJVrEREREZEAUeVaRERERCRAVLkWEREREQkQhWsRERERkQBRuBYRERERCRCFaxERERGRAFG4FhEREREJEIVrEREREZEA+f89yMDZrFkiNwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "width = 12\n",
    "height = 10\n",
    "plt.figure(figsize=(width, height))\n",
    "\n",
    "plt.plot(ALFA,Rsqu_test, label='validation data  ')\n",
    "plt.plot(ALFA,Rsqu_train, 'r', label='training Data ')\n",
    "plt.xlabel('alpha')\n",
    "plt.ylabel('R^2')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Question 10\n",
    "Perform a second order polynomial transform on both the training data and testing data. Create and fit a Ridge regression object using the training data, setting the regularisation parameter to 0.1.  Calculate the R^2 utilising the test data provided. Take a screenshot of your code and the R^2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>Once you complete your notebook you will have to share it. Select the icon on the top right a marked in red in the image below, a dialogue box should open, select the option all&nbsp;content excluding sensitive code cells.</p>\n",
    "        <p><img width=\"600\" src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/coursera/project/save_notebook.png\" alt=\"share notebook\"  style=\"display: block; margin-left: auto; margin-right: auto;\"/></p>\n",
    "        <p></p>\n",
    "        <p>You can then share the notebook&nbsp; via a&nbsp; URL by scrolling down as shown in the following image:</p>\n",
    "        <p style=\"text-align: center;\"><img width=\"600\"  src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/coursera/project/url_notebook.png\" alt=\"HTML\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\n",
    "        <p>&nbsp;</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>About the Authors:</h2> \n",
    "\n",
    "<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\">Joseph Santarcangelo</a> has a PhD in Electrical Engineering, his research focused on using machine learning, signal processing, and computer vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Other contributors: <a href=\"https://www.linkedin.com/in/michelleccarey/\">Michelle Carey</a>, <a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a> "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python",
   "language": "python",
   "name": "conda-env-python-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  },
  "widgets": {
   "state": {},
   "version": "1.1.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
